用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)

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

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


python中将html转化为pdf的常用工具是Wkhtmltopdf工具包,在python环境下,pdfkit是这个工具包的封装类。如何使用pdfkit以及如何配置呢?分如下几个步骤。
下载wkhtmltopdf安装包,并且安装到电脑上。
下载地址:https://wkhtmltopdf.org/downloads.html

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

开发工具

python
pycharm
pdfkit (pip install pdfkit)
lxml

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

基本思路:
1、url + headers
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.Selector(响应的数据)html_content = html_css.css('要获取的部分').get()

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

# 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, pdfkit
from lxml import etree
from requests_html import HTMLSession
session = HTMLSession()def main():# 1、url + headersstart_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_namehtml_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_urlfor 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()

代码操作:

代码有很多不完善的地方,欢迎评论一起讨论,感谢各位支持,之后我会发很多爬虫系列的博文,希望可以关注我哦!!!

祝大家学习python顺利!

用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)相关推荐

  1. 【Echart多场景示例应用】Echarts柱状图、折线图、饼图、雷达图等完整示例。 echarts主标题和副标题的位置、样式等设置(已解决附源码)

    **[写在前面]**前端时间做一个echarts的页面调整,临时客户要求加一个参数(总容量)显示,当时我就想用个默认的副标题吧,哪知客户和我说得紧跟在主标题后面,于是乎我就根据设置做了一个调整,我也是 ...

  2. Pygame实战:Python做一款超好玩的滑雪大冒险小游戏,超会玩【附源码】

    导语 ​冬日当然要和心爱的人一起去滑雪, 徜徉在雪白的世界, 浪漫又刺激!唯有爱和滑雪不可辜负! 不但风景绝美,而且还超!会!玩! 现在还不是时候 但秋天已过半动冬天还会远吗? 既然不能现在去滑雪,但 ...

  3. python爬取网页版QQ空间,生成词云图、柱状图、折线图(附源码)

    python爬取网页版QQ空间,生成词云图.柱状图.折线图 最近python课程学完了,琢磨着用python点什么东西,经过一番搜索,盯上了QQ空间,拿走不谢,欢迎点赞收藏,记得github给个sta ...

  4. python获取虎牙弹幕_教你用20行代码爬取直播平台弹幕(附源码)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  5. 【pygame游戏】用Python实现一个蔡徐坤大战篮球的小游戏,可还行?【附源码】

    Python制作坤坤打篮球小游戏 序言 准备工作 开发环境 效果预览 开始界面 游戏规则 结束游戏 代码实现 序言 话说在前面,我不是小黑子~ 我是超级大黑子

  6. python实现自动发送邮件,同时给多人发送,是工作变的简单(附源码)

    python自动发送邮件,实现同时给多人发送和邮箱轰炸(注意尽量不要轰炸哦,小心封号). 要想自动发送邮件首先需要获得我们邮箱的授权码. 授权码获取  QQ邮箱主页  >设置>账户> ...

  7. Python 基于微博舆情分析系统的设计与实现,GUI可视化界面(毕业设计,附源码,教程)

    文章目录 1. 简介 2. 技术选型 3. 实现功能简介 **第4章系统总体设计** 5. 系统选型 1. 简介 微博舆情分析系统软件是一款方便,快捷,实用的信息服务查询软件.随着智能手机在全球市场的 ...

  8. Python自制游戏:还原经典款贪吃蛇,表弟玩着玩着都哭了(附源码)

    文章目录 一.写在前面 二.准备工作 1.用到的软件 2.用到的模块 三.来吧 展示 四.效果 五.打包成exe可执行文件 一.写在前面 贪吃蛇这个游戏,在游戏机横行的年代,基本上闲下来就会玩玩贪吃蛇 ...

  9. python数据分析实战项目—运用matplotlib可视化分析10000条北京各大区二手房区域信息(附源码)

    文章目录 开发工具 数据内容 实现代码 运行效果 10000条二手房信息下载地址 总结 开发工具 python版本:Python 3.6.1 python开发工具:JetBrains PyCharm ...

最新文章

  1. C++中重载下标运算符[]
  2. Python将DataFrame的某一列作为index
  3. Systick 延时函数详解
  4. b^3 - a^3 = c
  5. 老年计算机音乐,老年音乐影集相机V1.2.5
  6. 微型计算机选用要点,微型计算机原理以及应用考试_new要点分析.doc
  7. 【POJ1083】 Moving Tables (并行的搬运)
  8. RabbitMQ 开启WEB管理
  9. 为什么这么多人在用Redis
  10. tomcat部署web应用的三种方式(转)
  11. 迅捷cad_迅捷元组
  12. JAVA贪吃蛇小游戏源代码系列
  13. 卸载vs2015社区版本然后装vs2015专业版本出现问题ActivityLog.xml错误
  14. 【ArcGIS自定义脚本工具】NDVI批量估算植被覆盖率
  15. CTFshow crypto wp
  16. 基于PHP的聚合数据车辆违章查询接口调用代码示例
  17. html 向上滚动 不间断,向上不间断滚动div+css+js模板
  18. 我叫MT4怎么在电脑上玩?我叫MT4手游安卓模拟器电脑版操作教程
  19. k8s容器部署elasticsearch+kibana+cerebro
  20. java实现docx文档下载

热门文章

  1. 两段视频如何无缝拼接?如何将两个视频拼接在一起
  2. 人才流失不断,苹果 M1 芯片首席设计师重回老东家——英特尔
  3. opencv3中的glob函数读取文件夹中数据
  4. SSM框架搭建及项目实战
  5. Layui数据表格分页通过两种方法实现
  6. 哈工大软件构造lab3总结
  7. JavaScript时间日期
  8. Goodnotes如何导出到windows电脑
  9. ios中用AFN做https
  10. option标签的默认值设置