本文介绍了关于“Python爬虫如何将教程转换为PDF电子书”的知识。很多人在实际办案过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
在写爬虫之前,我们先分析一下这个网站的页面结构[1]。网页左侧是教程的目录大纲,每个URL对应右侧的一篇文章。右上角是文章的标题,中间是文章的正文部分。正文内容是我们关注的重点。我们要爬的数据是所有网页的主体部分,下面的评论区是用户的评论区,对我们没有任何用处,可以忽略。
00-1010在了解了网站的基本结构之后,就可以开始准备爬虫所依赖的工具包了。请求和美化是爬虫的两个工件。重用用于网络请求,美丽汤用于操作html数据。有了这两个穿梭机,工作起来很容易。我们不需要像scrapy这样的爬虫框架,有点像用刀杀鸡。另外,由于是将html文件转换成pdf,也需要相应的库支持。wkhtmltopdf是一个非常好的工具,可以为多个平台将html转换为pdf。pdfkit是wkhtmltopdf的Python包。首先,安装以下依赖包,然后安装wkhtmltopdf。
pipinstallrequests
pipinstallbeautifulsoup
Pinstallpdfkit
工具准备
Windows平台直接在wkhtmltopdf官网[2]下载稳定版进行安装。安装完成后,将此程序的执行路径添加到系统环境的$PATH变量中,否则pdfkit找不到wkhtmltopdf会得到错误“找不到Wkhtmltopdf可执行文件”。Ubuntu和CentOS可以直接从命令行安装。
$ sudo apt-getinstallwkhtmltopdf # Ubuntu
$ sudoyumintsalwkhtmltopdf # centos
安装 wkhtmltopdf
一切准备就绪后,您可以上传代码,但是在编写代码之前,您应该先理清思路。该程序的目的是将所有URL对应的html正文部分保存在本地,然后使用pdfkit将这些文件转换为pdf文件。让我们分担任务。首先将某个URL对应的html文本保存在本地,然后查找所有URL执行同样的操作。
使用Chrome浏览器找到页面正文部分的标签,按F12找到正文对应的div标签:div class='x-wiki-content ',即为页面正文内容。用请求在本地加载整个页面后,您可以使用美化的输出来操作HTML的dom元素来提取文本内容。
的具体实现代码如下:使用soup.find_all函数查找文本标签,然后将文本内容保存到a.html文件中。
def parse_url_to_html(url):
response=requests.get(url)
soup=beautulsoup(response . content,' html5lib ')
body=soup . find _ all(class _=' x-wiki-content ')[0]
html=字符串(正文)
使用open('a.html ',' wb ')作为f:
第二步是解析出页面左侧的所有网址。同样,找到左侧菜单标签ul class='uk-nav uk-nav-side '
0210521/347/362285.png" alt="Python爬虫怎么把教程转换成PDF电子书">
具体代码实现逻辑:因为页面上有两个uk-nav uk-nav-side
的 class 属性,而真正的目录列表是第二个。所有的 url 获取了,url 转 html 的函数在第一步也写好了。
def get_url_list():
"""
获取所有URL目录列表
"""
response = requests.get("http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000")
soup = BeautifulSoup(response.content, "html5lib")
menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
urls = []
for li in menu_tag.find_all("li"):
url = "http://www.liaoxuefeng.com" + li.a.get('href')
urls.append(url)
return urls
最后一步就是把 html 转换成pdf文件了。转换成 pdf 文件非常简单,因为 pdfkit 把所有的逻辑都封装好了,你只需要调用函数 pdfkit.from_file
def save_pdf(htmls):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(htmls, file_name, options=options)
执行 save_pdf
函数,电子书 pdf 文件就生成了,效果图:
“Python爬虫怎么把教程转换成PDF电子书”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/123904.html