Python案例——采集专栏文章保存成pdf

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用:

  • 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 模块名

(如果你觉得安装速度比较慢, 你可以切换国内镜像源)


👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~

素材、视频教程、完整代码、插件安装教程我都准备好了,直接在文末名片自取就可


代码实现步骤:

  1. 发送请求, 模拟浏览器对于url地址发送请求

  2. 获取数据, 获取网页源代码

  3. 解析数据, 提取文章内容

  4. 保存数据, 保存成html文件, 然后再转成PDF文件

代码展示

import requests
import parsel
# 导入正则
import re
# 导入pdf模块
import pdfkit

“”"

  1. 发送请求, 模拟浏览器对于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状态码表示请求成功

“”"

  1. 获取数据, 获取网页源代码

    response.text 获取响应文本数据 <html字符串数据>

  2. 解析数据, 提取文章内容

    • 提取文章标题

    • 提取文章内容

    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)

“”"

  1. 保存数据, 保存成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)

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值