python将html存为pdf_用Python将HTML转为PDF。

上期提到了如何获取公众号文章信息,这回就说下怎么将网页转为PDF,方便日常学习。html

而后扩散一下以前一个比赛的结果(华章计算机抖音大赛)。数据库

顺便谈谈本身对从此送书的一个想法。微信

另外以前的送书活动,有中奖的读者没有联系我,因此这回一并送出。app

明天还会送两本书,你们也能够关注一下。ide

/ 01 / HTML转PDF学习

主要用到的库有pdfkit及wkhtmltopdf。url

安装我就不说了,网上也是一堆教程,经过下面的代码也能略知一二。spa

须要注意的点就是,把网页转PDF的时候,须要将网页的图片下载下来,保存在本地。orm

而后生成网页时调用本地的图片,这样就不会出如今PDF中图片缺失的状况。htm

本次没有去设置详细的PDF参数,因此生成的PDF排版并非很友好,不过仍是能凑合看的。

具体转换代码以下。

import pandas as pd

import requests

import pdfkit

import os

import re

# 读取数据并清洗

df = pd.read_csv('article.csv', header=None, names=['title', 'digest', 'article_url', 'date'], encoding='gbk')

df['date'] = pd.to_datetime(df.date.values, unit='s', utc=True).tz_convert('Asia/Shanghai')

df_date = df['date'].astype(str).str.split(' ', expand=True)

df['day'] = df_date[0]

# 获取目录的绝对路径

fileDir = os.path.abspath(os.path.dirname('F:\\article_pdf'))

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.901.400 QQBrowser/9.0.2524.400",

}

proxies = {

"https": None,

"http": None,

}

# 设置转PDF参数

options = {

"page-size": "Letter",

"encoding": "UTF-8",

"custom-header": [

("Accept-Encoding", "gzip")

]

}

# 调用wkhtmltopdf

# confg = pdfkit.configuration(wkhtmltopdf=r"C:\Users\Administrator\wkhtmltox-0.12.5-1.mxe-cross-win64\wkhtmltox\bin\wkhtmltopdf.exe")

for title, url, date in zip(df['title'], df['article_url'], df['day']):

print(title, url, date)

# 替换特殊符号

title = re.sub('[\/::*?"<>|]', '', title)

title = title.replace('\\', '_')

# html文件名

html_name = '{}/{}.html'.format('F:\\article_pdf', date + '_' + title)

res = requests.get(url, headers=headers, proxies=proxies, timeout=3)

html = res.text

# 用?来控制正则贪婪和非贪婪匹配;(.*?) 小括号来控制是否包含匹配的关键字

pattern = re.compile(r'data-src=\"http.*?\"')

result = pattern.findall(html)

picCnt = 0

for i in result:

picCnt = picCnt + 1

url = re.findall(r'\"(.*?)\"', i)[0]

# 图片名

picture_name = '{}/{}.png'.format('F:\\article_pdf', str(picCnt))

# 调用本地图片

html = html.replace(url, picture_name)

# 获取图片内容

r = requests.get(url)

with open(picture_name, "wb+") as f:

f.write(r.content)

# 保存html文件

html = html.replace('data-src', 'src')

fd = open(html_name, 'w', encoding="utf-8")

fd.write(html)

fd.close()

pdf_name = '{}/{}.pdf'.format('F:\\article_pdf', date + '_' + title)

try:

# html转pdf

pdfkit.from_file(html_name, pdf_name, options=options)

except:

pass

最后成功生成全部文章的PDF。

70063fd712295964f17cc9f961bce233.png

这里不知是为什么,生成PDF的时间挺长的,平均一个PDF耗时三分钟。

/ 02 / 比赛结果

以前公众号对华章计算机抖音大赛进行了推广,在上个礼拜比赛的结果也出来了。

这里帮出版社扩散一下比赛结果。

华章计算机抖音大赛比赛结果

固然我也参加了,并且也获奖了,不过是参与奖,四本书。

2ebc814695d23568549977122b5c43ff.png

活动参与的人并很少,一共应该就只有8我的参赛。

讲道理,900元现金以及30本书,这么丰厚的奖品,活动却没多少人参加,这值得沉思。

固然还会有第二届,届时我还会帮忙宣传,这回没有参加的小伙伴,下回必定要抓住机会。

为何我会继续支持呢?这应该源于我以前参加的一个PPT比赛。

8a4f6eac907121bbfc74e7a9e822d26d.png

至今,我还留存着参与活动后的那本赠书。

7d448dd6e516005097902c7a8fbda060.png

书很不错,我也从中学到了很多东西。

固然最重要的是动手就有收获的道理。

种一棵树最好的时间是十年前,其次是如今。因此行动起来,绝对没错。

从此的送书活动,若是条件容许的话,也将会以一些小比赛的形式送出,敬请期待。

/ 03 /  送书

下面应该是上个礼拜的截图了,姑且就以此做为参照。

78d4557cddff08b392f0adcdd0ee8b5c.png

以上的读者,若是对下面这本书有兴趣的话。

能够微信联系我,先到先得,就一本。

微信联系方式能够在公众号菜单栏里找到。

9c94ca228f7ce79a57f7d7548c171c67.png

一本有关Oracle数据库的书。

明天送的两本是有关Python数据分析的书,能够关注一下。

/ 04 / 总结

两期的文章代码已上传「GitHub」。

点击左下角阅读原文,便可获取。

万水千山老是情,点个「在看」行不行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Gradle – 2019版从Travis可靠发布到Maven Central

得益于在2018年和2019年末实现的显式登台存储库创建功能集&#xff0c;使您&#xff08;自动&#xff09;从Travis&#xff08;不仅是&#xff09;发布到Maven Central更加可靠。 背景 如果您仅想获取信息&#xff0c;如何使您的工件从Travis发布更可靠&#xff0c;请前进到另…

spring admin mysql_easyadmin: 简易的java后台管理框架,基于SpringBoot+FreeMark+ace admin+mysql...

easyadmin数据库一定要用utf8mb4编码&#xff0c;记得先执行manager.sql&#xff0c;再执行initdata.sql,其中tenant表不用管&#xff0c;这是我打算做的另外一个项目设计的表&#xff0c;因为直接复制的本项目&#xff0c;怕到时候忘记&#xff0c;所以没有删除拦截器相关文档…

SDI高清视频光端机特点有哪些?

SDI视频光端机设计和生产是适用于电视行业的高可靠、高性能的串行数字光传输设备&#xff0c;信号格式从19.4Mbps到1.485Gbps, 系统支持SMPTE292、SMPTE259M、SMPTE297M、SMPTE305M、SMPTE310M以及DVB-ASI(EN50083-9)等数字电视格式的信号,满足工业级产品的要求。那么&#xff…

SDI光端机是什么?SDI光端机产品介绍及监控方案!

SDI光端机就是光信号传输的中端设备。光纤价格的降低使它在各个领域得到很好的应用&#xff0c;因此各个光端机的厂家就好比是雨后春笋般发展起来。但是这里的厂家大部分技术并不是完全成熟&#xff0c;开发新技术需要耗资和人力、物力等&#xff0c;这就产生厂家多是中小企业&…

adf可以自定义溶剂吗_ADF Faces。 立即的自定义客户端事件

adf可以自定义溶剂吗在本文中&#xff0c;我将重点介绍ADF Faces Javascript API方法以从客户端触发自定义事件。 例如&#xff1a; function cliListener(actionEvent) {AdfCustomEvent.queue(actionEvent.getSource(), "servListener",null, true);}我们可以使用a…

VGA光端机技术原理及应用领域介绍

VGA光端机采用纯数字传输模式&#xff0c;能从根本上克服普通铜芯电缆传输系统在传输高频带信号时造成的拖尾、重影等现象&#xff0c;清晰的重现图象画面。VGA光端机传输的是光信号&#xff0c;没有电磁辐射&#xff0c;系统具有极高的保密性。同时VGA光端机把显示设备和信号源…

java getbytes 长度_JAVA中的getBytes()方法

在Java中&#xff0c;String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组。这个表示在不同情况下&#xff0c;返回的东西不一样&#xff01;String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示&#xff0c;如&…

按应用领域来划分,电话光端机主要分为哪几类

我们都知道&#xff0c;电话光端机就是把传统的电话信号转换成光信号并在光纤上进行传输的设备。但是对于电话光端机的分类这块&#xff0c;大家可能了解的并不是很清楚&#xff0c;电话光端机根据不同的分类方式&#xff0c;有着不同的分法&#xff0c;今天飞畅科技的小编主要…

光纤收发器长距离的传输过程出现死机的解决方案

光纤收发器是网络通信中必不可少的一种设备&#xff0c;但是&#xff0c;我们在使用过程中难免会遇到各种各样的问题&#xff0c;其中&#xff0c;光纤收发器出现死机可以说是很常见的一种故障&#xff0c;那么&#xff0c;光纤收发器经常会出现死机到底是什么原因&#xff0c;…

什么是光纤收发器?光纤收发器的两种连接方案你了解吗?

在如今这个科技飞速发展的时代&#xff0c;网络变得越来越重要&#xff0c;而说到网络的发展和建设&#xff0c;那就离不开光纤的大量应用了&#xff0c;怎样才能在网络建设中更快更稳定的实现光信号与电信号的相互转换&#xff0c;是我们要考虑的一个重要问题。而光纤收发器正…

maven项目 ant_将旧项目从Ant迁移到Maven的4个简单步骤

maven项目 ant一段时间以来&#xff0c;我们一直在考虑将构建从蚂蚁移植到Maven。 它发生在上个月&#xff0c;实际上比我们预期的要简单。 根据我的经验&#xff0c;这里简要介绍了我们遵循的步骤。 我们的应用程序是一个具有多个框架和技术的企业Web应用程序构建&#xff0c;…

工业级千兆以太网光纤收发器产品介绍

工业级光纤收发器是一种可以延长传输距离的一种工业交换机&#xff0c;它具有便捷、维护简单、抗干扰性能强、性能强大、运行稳定等优点。产品设计符合以太网标准&#xff0c;性能稳定可靠。该设备可广泛应用于智能交通、电信、安防、金融证券、海关、海运、电力、水利及油田等…

Java 12新功能完整指南

六个月飞得如此之快&#xff0c;是时候再次仔细研究一下即将发布的新JDK版本。 让我们满足Java 12及其向开发人员介绍的功能。 自甲骨文推出其6个月加速发布节奏以来已经有一段时间了&#xff0c;要跟上每个版本及其添加到表中的功能越来越难了。 从好的方面来说&#xff0c;…

如何预防光纤光缆布线中的雷击伤害

众所周知&#xff0c;光纤是具有不导电性的&#xff0c;可以免受冲击电流&#xff0c;光缆也具有良好的防护性能&#xff0c;光缆中的金属构件对地绝缘值较高&#xff0c;雷电流不易进入光缆&#xff0c;但因为光缆具有加强芯&#xff0c;特别是直埋光缆具有铠装层&#xff0c;…

三步法教你快速解决光纤收发器故障

光纤收发器&#xff0c;是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元&#xff0c;是网络通信中很重要的一种通信设备。但只要是机器&#xff0c;难免会有出现故障的时候&#xff0c;出现问题&#xff0c;找出问题&#xff0c;然后解决问题就…

网管光纤收发器产品硬件功能及网管收发器优点介绍

飞畅科技生产研发的网管型光纤收发器具有非网管收发器的全部功能&#xff0c;各种速率&#xff0c;单模/多模&#xff0c;单纤/双纤。此设备的网管界面设置简单&#xff0c;功能全面。此系列网管收发器支持多种网管方式&#xff0c;包括SNMP&#xff0c;WEB和Console等网管方式…

中北大学 软件构造 U+及上课代码详解

作业1 1.数据类型可分为两类:(原子类型) 、结构类型。 2.(数据结构)是计算机存储、组织数据的方式&#xff0c;是指相互之间存在一种或多种特定关系的数据元素的集合 3.代码重构指的是改变程序的(结构)而不改变其行为&#xff0c;以便提高代码的可读性、易修改性等。 4.软件实…

如何挑选家用交换机 交换机选购攻略分享

现如今&#xff0c;伴随着网络的迅速普及&#xff0c;交换机的“身影”也开始出现在不少普通个人用户家庭中。不过许多家庭用户在挑选交换机时&#xff0c;往往都会将注意力集中到交换机的扩展性能上&#xff0c;他们一味地追求交换机的接口数要多&#xff1b;其实&#xff0c;…

oracle不维护java_宣布 Java 8 停止维护后,Oracle 又毙掉了 JavaOne!

2019 年 1 月之后&#xff0c;Oracle 将不会在网站上发布 Java SE 8 商业使用的更新下载。如需持续获取安全的 bug 修复和安全补丁以及 Java SE 8 或以前版本的稳定性支持&#xff0c;可以通过 Oracle Java SE 高级版&#xff0c;Oracle Java SE 高级桌面&#xff0c;或 Oracle…

工业以太网交换机有多少个快速以太网接口?

工业以太网交换机应用于复杂的工业环境中实时以太网数据传输&#xff0c;以太网交换机是非常的重要&#xff0c;它把握着一个网络的命脉&#xff0c;有人会提出以太网交换机有多少个快速以太网接口&#xff1f;到底该如何进行选择呢&#xff1f;接下来我们就跟随飞畅科技的小编…