用python下载csdn博主的所有博文,html转换成pdf,有一本学习用的电子书。(附源代码)我们在学习编程的时候,会想把有用的知识点保存下来。我们可以把知识点的内容爬下来,变成pdf格式,方便我们闲暇时拿着手机浏览。
首先,下载一篇博文,转换成pdf格式。私信边肖01可以获得很多Python学习资源。
python中将html转化为pdf的常用工具是Wkhtmltopdf工具包,在python环境下,pdfkit是这个工具包的封装类。如何使用pdfkit以及如何配置呢?分如下几个步骤。
下载wkhtmltopdf安装包并安装在您的计算机上。
我下的是这个版本,安装的时候要记住路径,之后调用要用到路径
开发工具python
路径
pdf套件(pip安装pdf套件)
什么是
今天的目标:下载所有博主的博文,并以pdf格式保存基本思路:。
1、url标题
2.网页分析:CSDN网页是一个静态网页,需要获取网页的源代码。
3.lxml解析获得boke_urls,author_name
4.循环获取boke_url
5.xpath解析以获取文件名
6.css选择器获取标签文本的主体。
7.构建一个拼接的html文件
8.保存html文件
9.文件的转换
网页分析:CSDN网页是一个静态网页,网页的源代码是索取的。
start _ URL=" https://i1bit.blog.csdn.net/"
以确定网址为同步加载为例。
css选择器获取标签文本的主体为代码要点部分
Css语法部分
Html_css=parsel。选择器(响应数据)html_content=html_css.css('要获取的部分')。Get()点击博客作者的博客文章,打开开发者工具
# csssselector获取标记文本的正文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 ' ' '。格式(html _ content)文件的转换
config=pdf kit . 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 Files\wkhtmltopdf\bin\wkhtmltopdf.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()代码操作: