前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐
环境使用:
-
python 3.8 >>>>>> 运行代码
-
pycharm 2022.3 >>>>>> 辅助敲代码
-
wkhtmltopdf 软件 找助理邀课老师获取
模块使用:
内置模块
- re >>>正则表达式
第三方模块 需要安装
-
requests >>> pip install requests 数据请求
-
parsel >>> pip install parsel 数据解析
-
pdfkit >>> pip install pdfkit
安装方法:
win + R 输入cmd 输入安装命令 pip install 模块名
(如果你觉得安装速度比较慢, 你可以切换国内镜像源)
👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~
素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可
代码实现步骤:
-
发送请求, 模拟浏览器对于url地址发送请求
-
获取数据, 获取网页源代码
-
解析数据, 提取文章内容
-
保存数据, 保存成html文件, 然后再转成PDF文件
代码展示
import requests
import parsel
# 导入正则
import re
# 导入pdf模块
import pdfkit
“”"
- 发送请求, 模拟浏览器对于url地址发送请求
“”"
for page in range(10 ,51, 10):
link = f'https://*****/api/v4/columns/c_1090924073042837504/items?limit=10&offset={page}'
# 模拟浏览器 --> headers 请求头 <可以直接复制>
headers = {
# User-Agent 用户代理, 表示浏览器基本身份信息
完整源码、解答、教程皆+VX:pytho8987获取,验证备注“777”
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
}
json_data = requests.get(url=link, headers=headers).json()
for index in json_data['data']:
content_id = index['id']
print(content_id)
请求链接
url = f'https://*****/p/{content_id}'
发送请求
调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量名response接收数据
response = requests.get(url=url, headers=headers)
<Response [200]> 响应对象 200状态码表示请求成功
“”"
-
获取数据, 获取网页源代码
response.text 获取响应文本数据 <html字符串数据>
-
解析数据, 提取文章内容
-
提取文章标题
-
提取文章内容
css选择器提取数据内容:
根据标签属性提取数据内容
-
“”"
把获取到html字符串数据, 转成可解析对象
selector = parsel.Selector(response.text)
提取标题
title = selector.css('.Post-Title::text').get()
new_title = re.sub(r'[\\/\:*?"<>|]', '', title)
print(new_title)
提取内容 <html格式>
content = selector.css('div.css-1g0fqss').get()
前端模板
html_str ='''
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
{article}
</body>
</html>
'''
字符串格式化方法
html = html_str.format(article=content)
使用正则提取链接地址
img_url_list = re.findall('<noscript><img src="(.*?)" data-caption=""', content) # 链接
完整源码、解答、教程皆+VX:pytho8987获取,验证备注“777”
img_list = re.findall('</noscript><img src="(.*?)" data-caption=""', content) # 需要被替换的内容
for img_url, img in zip(img_url_list, img_list):
html = html.replace(img, img_url)
“”"
- 保存数据, 保存成html文件, 然后再转成PDF文件
“”"
设置文件路径以及文件名和格式
html_path = 'html\\' + new_title + '.html'
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')
pdf_path = 'pdf\\' + new_title + '.pdf'
把那个html文件内容, 转成pdf文件
pdfkit.from_file(html_path, pdf_path, configuration=config)
print(title)
尾语
感谢你观看我的文章呐~本次航班到这里就结束啦 🛬
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~
躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。