Python 3.8
Pycharm
wkhtmltopdf 软件 – 文末获取
requests >>> pip install requests 数据请求
parsel >>> pip install parsel 数据解析
re >>> 内置模块 不需要安装 正则表达式
pdfkit >>> pip install pdfkit
明确需求:
明确采集网站以及数据内容是什么?
抓包分析, 数据具体是请求那个链接可以得到
F12 打开开发者工具
刷新网页
搜索内容
发送请求 -> 模拟浏览器对于链接地址发送请求
请求链接: https://zhuanlan.zhihu.com/p/193129156 get请求
获取数据 -> 获取服务器返回响应数据
开发者工具: Response
解析数据 -> 提取我们需要的数据内容
文章数据内容 <包含html格式>
保存数据 -> 数据内容保存本地文件
I. 先保存html文件
II. 把html文件转成PDF
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel
# 导入正则表达式模块
import re
# 导入pdf
import pdfkit
"""
1. 发送请求 -> 模拟浏览器对于链接地址发送请求
- 模拟浏览器: 防止被反爬
headers 请求头 --> 在开发者工具中可以直接复制
- 链接地址
- 发送请求
响应对象, 表示请求成功
"""
模拟浏览器 字典数据类型, 构建完整键值对
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 )
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
headers = {
# User-Agent 用户代理 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}
link = 'https://www.zhihu.com/api/v4/columns/c_1090924073042837504/items?limit=10&offset=10'
json_data = requests.get(url=link, headers=headers).json()
for index in json_data['data']:
链接地址
url = f'https://zhuanlan.zhihu.com/p/{index["id"]}'
发送请求 --> post请求data <隐藏> params请求参数<在链接问号后面>
response = requests.get(url, headers=headers)
"""
2. 获取数据 -> 获取服务器返回响应数据
response.text 获取响应文本数据
网页源代码 html
response.json() 获取响应json数据
必须完整json数据格式
response.content 获取响应二进制数据
获取图片/视频/音频/特定格式文件
3. 解析数据 -> 提取我们需要的数据内容
文章数据内容 <包含html格式>
解析方式:
re 正则表达式 --> 对于字符串数据进行提取
css选择器 --> 根据标签属性提取数据内容
xpath节点提取 --> 根据标签节点提取数据内容
个人喜好: css选择器 -> 根据标签属性提取数据内容
"""
selector = parsel.Selector(response.text)
提取整个文章数据 html
content = selector.css('.css-376mun').get()
"""
1. 提取图片链接
2. 提取需要被替换的内容
3. 一一替换
"""
提取图片
img_url_list = re.findall('
提取需要被替换的内容
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 )
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
img_list = re.findall(', content)
for循环遍历, 同时遍历两个列表数据
for img_url, img in zip(img_url_list, img_list):
replace 字符串替换
content = content.replace(img, img_url)
提取文章标题
title = selector.css('.Post-Main .Post-Title::text').get()
title = re.sub(r'[\\\/\'‘\‘:*?"<>|]', '', title)
print(title)
"""
4. 保存数据 -> 数据内容保存本地文件
I. 先保存html文件
II. 把html文件转成PDF
"""
html_str ='''
Document
{article}
'''
字符串格式化方法
html = html_str.format(article=content)
文件路径
HtmlPath = f'html\\{title}.html'
with open(HtmlPath, mode='w', encoding='utf-8') as f:
写入数据
f.write(html)
PdfPath = f'pdf\\{title}.pdf'
wkhtmltopdf 添加软件路径
config = pdfkit.configuration(wkhtmltopdf=r'D:\demo\wkhtmltopdf\bin\wkhtmltopdf.exe')
pdfkit.from_file(HtmlPath, PdfPath, configuration=config)
感谢你观看我的文章呐~本次航班到这里就结束啦
希望本篇文章有对你带来帮助 ,有学习到一点知识~
躲起来的星星也在努力发光,你也要努力加油(让我们一起努力叭)。
最后,宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀