Python爬虫怎么把教程转换成PDF电子书

技术Python爬虫怎么把教程转换成PDF电子书本篇内容介绍了“Python爬虫怎么把教程转换成PDF电子书”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧

本文介绍了关于“Python爬虫如何将教程转换为PDF电子书”的知识。很多人在实际办案过程中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

在写爬虫之前,我们先分析一下这个网站的页面结构[1]。网页左侧是教程的目录大纲,每个URL对应右侧的一篇文章。右上角是文章的标题,中间是文章的正文部分。正文内容是我们关注的重点。我们要爬的数据是所有网页的主体部分,下面的评论区是用户的评论区,对我们没有任何用处,可以忽略。

Python爬虫怎么把教程转换成PDF电子书

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元素来提取文本内容。

Python爬虫怎么把教程转换成PDF电子书

的具体实现代码如下:使用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电子书

“Python爬虫怎么把教程转换成PDF电子书”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/123904.html

(0)

相关推荐

  • sqlserver中关于always on的知识点有哪些

    技术sqlserver中关于always on的知识点有哪些这篇文章主要介绍“sqlserver中关于always on的知识点有哪些”,在日常操作中,相信很多人在sqlserver中关于always on的知识点有哪些

    攻略 2021年11月5日
  • oracle归档日志流式分析(oracle执行语句分析)

    技术Oracle查询脚本的示例分析这篇文章将为大家详细讲解有关Oracle查询脚本的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 --查询回滚段信

    攻略 2021年12月20日
  • 怎么理解JavaScript中的变量、范围和提升

    技术怎么理解JavaScript中的变量、范围和提升本篇内容介绍了“怎么理解JavaScript中的变量、范围和提升”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这

    攻略 2021年11月20日
  • c++和Python哪个好(c++)

    技术C++如何实现堆排序这篇文章主要介绍“C++如何实现堆排序”,在日常操作中,相信很多人在C++如何实现堆排序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++如何实现堆排序”的疑惑有

    攻略 2021年12月22日
  • 川菜家常菜,川菜有哪些著名的家常菜

    技术川菜家常菜,川菜有哪些著名的家常菜要说美食川菜家常菜,四川是必不可少的。大家都知道四川人的生活节奏总体来说比较慢,是比较乐于享受的人。对于吃的东西,更是讲究。四川的美食更是吸引了很多人来四川旅游。每一个地界都有自己喜

    生活 2021年10月22日
  • unicode如何实现中文转换

    技术unicode如何实现中文转换这篇文章将为大家详细讲解有关unicode如何实现中文转换,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。public static String ge

    攻略 2021年12月3日