您的位置:首页技术文章
文章详情页

python实现csdn全部博文下载并转PDF

【字号: 日期:2022-06-16 18:21:40浏览:6作者:猪猪

我们学习编程,在学习的时候,会有想把有用的知识点保存下来,我们可以把知识点的内容爬下来转变成pdf格式,方便我们拿手机可以闲时翻看,是很方便的

先来一个单个的博文下载转pdf格式的操作

python实现csdn全部博文下载并转PDF

python中将html转化为pdf的常用工具是Wkhtmltopdf工具包,在python环境下,pdfkit是这个工具包的封装类。如何使用pdfkit以及如何配置呢?分如下几个步骤。

下载wkhtmltopdf安装包,并且安装到电脑上。下载地址:https://wkhtmltopdf.org/downloads.html

python实现csdn全部博文下载并转PDF

我下的是这个版本,安装的时候要记住路径,之后调用要用到路径

python实现csdn全部博文下载并转PDF

开发工具 python pycharm pdfkit (pip install pdfkit) lxml

今天目标:博主的全部博文下载,并且转pdf格式保存

基本思路:

1、url + headers2、分析网页: CSDN网页是静态网页, 请求获取网页源代码3、lxml解析获取boke_urls, author_name4、循环遍历,得到 boke_url5、xpath解析获取文件名6、css选择器获取标签文本的主体7、构造拼接html文件8、保存html文件9、文件的转换

分析网页: CSDN网页是静态网页, 请求获取网页源代码start_url =“https://i1bit.blog.csdn.net/” 为例确定网址为同步加载

python实现csdn全部博文下载并转PDF

css选择器获取标签文本的主体为代码要点部分css语法部分

# css选择器获取标签文本的主体html_css = parsel.Selector(response_2)html_content = html_css.css(’article’).get()# 构造拼接html文件html = ’’’<!DOCTYPE html> <html lang='en'> <head><meta charset='UTF-8'><title>Title</title> </head> <body>{} </body></html> ’’’.format(html_content)

点开博主的一篇博文打开开发者工具

python实现csdn全部博文下载并转PDF

# css选择器获取标签文本的主体html_css = parsel.Selector(response_2)html_content = html_css.css(’article’).get()# 构造拼接html文件html = ’’’<!DOCTYPE html> <html lang='en'> <head><meta charset='UTF-8'><title>Title</title> </head> <body>{} </body></html> ’’’.format(html_content)

文件的转换

config = pdfkit.configuration(wkhtmltopdf=r’这里为下载wkhtmltopdf.exe的路径’) pdfkit.from_file(第一个参数要转变的html文件,第二个参数转变后的pdf文件,configuration=config ) # 上面这样写清楚一点,也可以直接 pdfkit.from_file(第一个参数要转变的html文件,第二个参数转变后的pdf文件, configuration=pdfkit.configuration(wkhtmltopdf=r’这里为下载wkhtmltopdf.exe的路径’) )

源码展示:

import parsel, os, pdfkitfrom lxml import etreefrom requests_html import HTMLSessionsession = HTMLSession()def main(): # 1、url + headers start_url = input(r’请输入csdn博主的地址:’) headers = {’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ’ ’(KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36’ } # 2、分析网页: CSDN网页是静态网页, 请求获取网页源代码 response_1 = session.get(start_url, headers=headers).text # 3、解析获取boke_urls, author_name html_xpath_1 = etree.HTML(response_1) author_name = html_xpath_1.xpath(r’//*[@id='floor-user-profile_485']/div/div[1]/div[2]/div[2]/div[1]/div[1]/text()’)[0] boke_urls = html_xpath_1.xpath(r’//article[@class='blog-list-box']/a/@href’) # 4、循环遍历,得到 boke_url for boke_url in boke_urls:# 5、请求response_2 = session.get(boke_url, headers=headers).text# 6、xpath解析获取文件名html_xpath_2 = etree.HTML(response_2)file_name = html_xpath_2.xpath(r’//h1[@id='articleContentId']/text()’)[0]# 7、css选择器获取标签文本的主体html_css = parsel.Selector(response_2)html_content = html_css.css(’article’).get()# 8、构造拼接html文件html = ’’’<!DOCTYPE html> <html lang='en'> <head><meta charset='UTF-8'><title>Title</title> </head> <body>{} </body></html> ’’’.format(html_content)# 9、创建两个文件夹, 一个用来保存html 一个用来保存pdf文件if not os.path.exists(r’{}-html’.format(author_name)): os.mkdir(r’{}-html’.format(author_name))if not os.path.exists(r’{}-pdf’.format(author_name)): os.mkdir(r’{}-pdf’.format(author_name))# 10、保存html文件try: with open(r’{}-html/{}.html’.format(author_name, file_name), ’w’, encoding=’utf-8’) as f:f.write(html)except Exception as e: print(’文件名错误’)# 11、文件的转换try: config = pdfkit.configuration(wkhtmltopdf=r’C:Program Fileswkhtmltopdfbinwkhtmltopdf.exe’) pdfkit.from_file(’{}-html/{}.html’.format(author_name, file_name),’{}-pdf/{}.pdf’.format(author_name, file_name),configuration=config ) a = print(r’--文件下载成功:{}.pdf’.format(file_name))except Exception as e: continueif __name__ == ’__main__’: main()

代码操作:

python实现csdn全部博文下载并转PDF

到此这篇关于python实现csdn全部博文下载并转PDF的文章就介绍到这了,更多相关python 博文下载并转PDF内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!

标签: Python 编程
相关文章: