利用python将喜欢的csdn文章保存成pdf

本文介绍了如何使用Python的pdfkit、requests和parsel模块将优快云文章转换为PDF。首先,文章讲解了安装所需的工具,然后通过分析网页HTML获取文章主要内容,最后将HTML转换为整洁的PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

收藏了多年的csdn免费文章,忽然收费或者突然被作者删除了怎么办?

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

文章目录

 

1. 工具

1.1需要使用到的模块

pdfkit,requests,parsel

1.2 需要安装的工具

wkhtmltox-0.12.5-1.msvc2015-win64.exe 工具
链接:https://pan.baidu.com/s/1e_0_4tpyxIU8lHqJF56BhA
提取码:2141
直接傻瓜式的默认安装即可

2. 获得文章内容的html(去除无关内容)

2.1 打开浏览器右键检查进行分析

在这里插入图片描述

通过简单的分析可以发现右边那箭头就是我们需要的内容,且都是与文章相关的,不相关的是没有的

2.2 开始数据解析

import requests
import parsel
url = 'https://blog.youkuaiyun.com/A728848944/article/details/108026415'
headers = {
    'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
html = response.text
selector = parsel.Selector(html)
title = selector.css('.title-article::text').get()
article = selector.css('article').get()  # 提取标签为article 的内容
print(article)

输出结果:
在这里插入图片描述
与上面的相互观察可指定数据提取是对的

2.3 组装html

由于提取出来的html是不全的,所以需要补充
如下是一个标准的html结构

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
    相关内容
</body>
</html>

开始拼接,并保存下来

src_html = '''
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
    {content}
</body>
</html>
'''
with open(title+'.html', mode='w+', encoding='utf-8') as f:
    f.write(src_html.format(content=article))
    print(title+'================保存成功')

输出结果:
在这里插入图片描述
看保存出来的html
在这里插入图片描述
是不是相当简洁,没有任何多余的

3. 将获得的html转成pdf

3.1 检查工具是否成功安装

成功可以在下图找到相关包如下图所示(默认安装地址都是一样的)
在这里插入图片描述

3.2 使用pdfkit模块

3.2.1 先进行简单的配置

config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')

这就是上面路径下bin的wkhtmltopdf.exe一个软件

3.2.2 开始转换

pdfkit.from_file(title+'.html', title+'.pdf', configuration=config)
print(title+'.pdf','已保存成功')

输出如下:

在这里插入图片描述
观察是否成功打印 如下图所示:

在这里插入图片描述
观察是否可用:

在这里插入图片描述

== 大功完成了!==

最后当然是全部代码拉

import pdfkit
import requests
import parsel
url = 'https://blog.youkuaiyun.com/A728848944/article/details/108026415'
headers = {
    'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
html = response.text
selector = parsel.Selector(html)
title = selector.css('.title-article::text').get()
article = selector.css('article').get()  # 提取标签为article 的内容

src_html = '''
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
    {content}
</body>
</html>
'''
with open(title+'.html', mode='w+', encoding='utf-8') as f:
    f.write(src_html.format(content=article))
    print(title+'================保存成功')

config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
pdfkit.from_file(title+'.html', title+'.pdf', configuration=config)

print(title+'.pdf','已保存成功')

小福利

获取一个博主所有文章pdf代码

import pdfkit
import requests
import parsel
import os
import time


src_html = '''
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>
    {content}
</body>
</html>
'''
headers = {
    'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'
}

def download_one_page(page_url):
    response = requests.get(url=page_url, headers=headers)
    html = response.text
    selector = parsel.Selector(html)
    title = selector.css('.title-article::text').get()
    article = selector.css('article').get()  # 提取标签为article 的内容

    with open(title+'.html', mode='w+', encoding='utf-8') as f:
        f.write(src_html.format(content=article))

    config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
    pdfkit.from_file(title+'.html', title+'.pdf', configuration=config)
    print(title+'.pdf','=================已保存成功')

def down_all_url(index_url):
    index_response = requests.get(url=index_url,headers=headers)
    index_selector = parsel.Selector(index_response.text)
    urls = index_selector.css('.article-list h4 a::attr(href)').getall()
    for url in urls:
        download_one_page(url)
        time.sleep(2)

if __name__ == '__main__':
    down_all_url('https://blog.youkuaiyun.com/A728848944')
### 如何下载 Python 基础知识相关内容到 PDF 要将 优快云 上关于 Python 基础知识的文章保存PDF 文件,可以采用多种方式完此操作。以下是具体的方法: #### 方法一:通过 `requests` 和 `ReportLab` 实现自动化下载和转换 如果目标是从网络抓取文章内容并将其转化为 PDF,则可以通过以下代码实现。 ```python import requests from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas def download_and_convert_to_pdf(url, output_filename="output.pdf"): response = requests.get(url) content = response.text c = canvas.Canvas(output_filename, pagesize=letter) width, height = letter text_object = c.beginText(40, height - 50) lines = content.split("\n")[:100] # 只截取前100行作为演示[^1] for line in lines: text_object.textLine(line.strip()) c.drawText(text_object) c.save() url = "https://blog.csdn.net/example/article/details/python_basics" download_and_convert_to_pdf(url, "python_basics.pdf") ``` 这段脚本会从指定 URL 抓取网页的内容,并尝试将其写入 PDF 中。需要注意的是,实际应用中可能需要处理 HTML 解析以及样式保留等问题[^3]。 #### 方法二:利用浏览器插件或扩展程序 对于不熟悉编程技术的用户来说,最简单的方式可能是直接借助现代浏览器的功能或者第三方工具来完这项工作。例如,在 Chrome 浏览器中打开所需页面之后,按下组合键 Ctrl + P (Windows/Linux) 或 Command + P (Mac),然后选择 “另存为 PDF”,即可轻松创建本地副本[^2]。 另外还有专门设计用于此类场景的应用软件和服务平台可供选用,比如 Adobe Acrobat Pro DC 提供了强大的编辑功能的同时也支持一键导出PDF文件;而一些在线服务如 Smallpdf 则允许上传文档并通过其界面调整设置后再下载最终产物。 --- ### 注意事项 - 如果涉及版权保护材料,请务必确认是否有合法授权再行动。 - 自动化爬虫行为应遵循目标站点的服务条款(TOS),避免违反相关规定引发法律风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值