前期准备
环境使用
- Python 3.8
- Pycharm
模块使用
- requests >>> pip install requests 数据请求
- parsel >>> pip install parsel 数据解析
- re >>> 内置模块 不需要安装 正则表达式
- pdfkit >>> pip install pdfkit
实现步骤
- 采集文章内容, 保存成html文件
- 把html文件, 转成pdf文件
采集数据
- 发送请求
找到相对应数据链接 - 获取数据
获取响应数据 - 解析数据
提取我们想要的内容 - 保存数据
把解析出来数据进行保存
实现代码
导入模块
有什么不懂的问题,可以直接点击文章末尾名片进行交流学习~
'''
# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel
# 导入文件操作模块
import os.path
# 导入正则模块
import re
# 导入pdf模块
import pdfkit
html_str ='''
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
{article}
</body>
</html>
'''
- 确定请求链接
url = f'https://zhuanlan.zhihu.com/p/{index["id"]}'
- 伪装模拟
headers = {
# user-agent 用户代理 表示浏览器基本身份信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
发送请求
response = requests.get(url=url, headers=headers)
获取数据
解析数据 --> 把获取下来html字符串数据<response.text> 转成可解析对象
selector = parsel.Selector(response.text)
提取标题
title = selector.css('.Post-Title::text').get()
提取内容
content = selector.css('.css-376mun .RichText').get()
提取图片链接
img_url_list = re.findall('<noscript><img src="(.*?)" data-caption=""', content)
提取替换的内容
img_list = re.findall('</noscript><img src="(.*?)" data-caption=""', content)
for img_url, img in zip(img_url_list, img_list):
content = content.replace(img, img_url)
保存数据
自动创建文件
html_file = 'html\\'
判断是否存在这个文件夹
if not os.path.exists(html_file):
自动创建
os.mkdir(html_file)
pdf_file = 'pdf\\'
判断是否存在这个文件夹
if not os.path.exists(pdf_file):
自动创建
os.mkdir(pdf_file)
html_path = html_file + title + '.html'
pdf_path = pdf_file + title + '.pdf'
html = html_str.format(article=content)
with open(html_path, mode='w', encoding='utf-8') as f:
f.write(html)
需要把html文件转成pdf
config = pdfkit.configuration(wkhtmltopdf=r'D:\demo\wkhtmltopdf\bin\wkhtmltopdf.exe')
pdfkit.from_file(html_path, pdf_path, configuration=config)
print(title, '保存成功')
效果展示
最后
刚开始接触Python的宝子,有什么不懂的都可以私信我哦
我还准备了大量的免费视频教程,PDF电子书籍,以及源代码!直接在文末名片自取即可哦!
👇 问题解答 · 源码获取 · 技术交流 · 抱团学习请点击下方名片 👇