如何利用Python将网页文章转PDF,代码是什么
Admin 2022-08-19 群英技术资讯 297 次浏览
我们有时候看到一篇好的文章,想去保存下来,传统方式一般是收藏书签、复制粘贴到文档或者直接复制链接保存,但这样一次两次还好,数量多了,比较麻烦不说,还可能不好找~
这个时候,Python的作用就来了,直接抓下来导出为PDF,直接把整个网站的内容都导下来都行~
话不多说,我们直接上代码!
import requests import parsel import pdfkit import os import re html_str = """ <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> {article} </body> </html> """ def change_title(title): """ 替换标题中的特殊字符 :param title: 传入文章标题 :return: 返回一个替换掉特殊字符的标题 """ """ 使用re.compile()将正则表达式的字符串形式编译为一个对象,通过该对象提供的一些列方法对文本 进行匹配查找 re.sub() 第一个参数对应的正则表达式,第二个参数为要替换成的字符串, 第三个参数为源字符串 """ pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]") # '/ \ : * ? " < > |' new_title = re.sub(pattern, "_", title) # 替换为下划线 return new_title for page in range(1, 11): """ 发送请求的url地址,唯一资源定位符 headers: 请求头 把python伪装成浏览器对服务器发送请求, 然后服务器会给我们返回一个响应数据 请求头所加的参数都是可以在开发者工具中的headers里面的request headers中找到的 比如 user-agent:代表着浏览器的信息 cookies:用户的信息 常用于检测是否有登陆账号 host:域名 referer:常说的防盗链,告诉服务器是从哪个网页跳转过来的 请求方式:可以通过开发者工具中headers里面的数据看到是什么样的请求方式 get请求: 是可以直接从服务器上面获取数据 post请求:需要向服务器发送一个数据 比如说(搜索/登陆) response:响应对象 状态码: 200表示请求成功 300:重定向 跳转 400:通常是url网址不对 500 一般是服务器问题 获取网页文本数据 response.text 获取网页json字典数据 response.json() 获取网页二进制数据 response.content """ url = 'https://****/qdPython/article/list/{page}' headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36' } response = requests.get(url=url, headers=headers) """ url里面的****替换为blog.csdn.net即可 把 html 字符串数据转换成一个 Selector 对象 Selector 就具有一系列数据解析的方法 css/xpath/re 类选择器 都是使用圆点.开头 ID选择器 是使用#开头 属性选择器: ::text获取标签里面的文本数据 ::attr(xxx) 获取标签内某一个属性的数据 get() 从 Selector 对象中提取第一个数据, 直接返回字符串数据给我们 getall() 从 Selector 对象中提取提取所有数据, 返回一个列表 """ selector = parsel.Selector(response.text) href = selector.css('.article-list div.article-item-box a::attr(href)').getall() for link in href: response_1 = requests.get(url=link, headers=headers) selector_1 = parsel.Selector(response_1.text) title = selector_1.css('#articleContentId::text').get() content = selector_1.css('#content_views').get() new_title = change_title(title) # 创建文件保存地址以及保存文件的名字 和格式 pdf_path = 'pdf\\' + new_title + '.pdf' html_path = 'pdf\\' + new_title + '.html' # str.format() 字符串格式化方法 html = html_str.format(article=content) """ with open 打开文件时, 当文件对象引用完毕之后会自动关闭文件 html_path:文件保存路径以及名字格式 mode:保存方式 w 写入 如果你不写mode默认是r 读 encoding: 编码 as f 重命名 可以自定义 f = open() f.writer() f.close() """ with open(html_path, mode='w', encoding='utf-8') as f: f.write(html) print('正在保存:', title) # exe 文件存放的路径 config = pdfkit.configuration(wkhtmltopdf='C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe') # 把 html 通过 pdfkit 变成 pdf 文件 pdfkit.from_file(html_path, pdf_path, configuration=config) os.remove(html_path)
兄弟们快去试试吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
生成器的使用在Python中,如果一个函数定义的内部使用了yield关键字,那么在执行函数的时候返回的是一个生成器,而不是常规函数的返回值。我们先来看一个常规函数的定义,下面的函数f()通过return语句返回1,那么print打印的就是数字1。deff():ret...
这篇文章主要介绍了Python最长回文子串问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了python中常见进制之间的转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
马上不就到圣诞节了嘛,我看到朋友圈里很多小伙伴再纷纷炫耀自己收到的专属圣诞树,今天小编给大家介绍的是通过Python绘制的五合一版圣诞树:圣诞树+落叶+雪花+背景音乐+浪漫弹窗。感兴趣的小伙伴快来学习一下吧
我们使用Python的时候,需要导入模块、导入包等等。一些新手对于python导入方法不是很清楚,下面小编给大家分享一些python常见的导入方法,供大家参考学习。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008