Python采集专栏文档保存成pdf

前期准备

环境使用

  • Python 3.8
  • Pycharm

模块使用

  • requests >>> pip install requests 数据请求
  • parsel >>> pip install parsel 数据解析
  • re >>> 内置模块 不需要安装 正则表达式
  • pdfkit >>> pip install pdfkit

实现步骤

  1. 采集文章内容, 保存成html文件
  2. 把html文件, 转成pdf文件

采集数据

  1. 发送请求
    找到相对应数据链接
  2. 获取数据
    获取响应数据
  3. 解析数据
    提取我们想要的内容
  4. 保存数据
    把解析出来数据进行保存

实现代码

导入模块

有什么不懂的问题,可以直接点击文章末尾名片进行交流学习~

'''
# 导入数据请求模块
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电子书籍,以及源代码!直接在文末名片自取即可哦!

👇 问题解答 · 源码获取 · 技术交流 · 抱团学习请点击下方名片 👇

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值