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)

相关推荐

  • vs code vue模板如何创建

    技术vs code vue模板如何创建这篇文章主要为大家展示了“vs code vue模板如何创建”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vs code vue模板如何

    攻略 2021年11月24日
  • oracle sql调优

    技术oracle sql调优 oracle sql调优oracle的sql优化]基于oracle的sql优化
    【博主】高瑞林
    【博客地址】http://www.cnblogs.com/grl214一.编

    礼包 2021年12月3日
  • css中下划线样式怎么设置长度

    技术css中下划线样式怎么设置长度这篇文章主要介绍“css中下划线样式怎么设置长度”,在日常操作中,相信很多人在css中下划线样式怎么设置长度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”

    攻略 2021年11月30日
  • Kubernetes04

    技术Kubernetes04 Kubernetes04 - 从容器到云原生
    容器到云原生的路线:
    容器 - Kubernetes - 微服务 -云原生 - 服务网格 - 使用场景 - 开源。
    为什么使用

    礼包 2021年11月12日
  • 金箍棒怎么画,孙悟空怎么画,好看的)

    技术金箍棒怎么画,孙悟空怎么画,好看的)一、在画板的中央画出一个倒3字,然后再用一段弧形连接起来画出孙悟空的脸部金箍棒怎么画。二、接下来再画四个小圆圈,按照下图的方法画出孙悟空的眼睛。
    三、接下来我们再画出孙悟空的后脑勺

    生活 2021年10月31日
  • 独特的近义词是什么,别具一格的近义词是什么

    技术独特的近义词是什么,别具一格的近义词是什么词目:别具一格拼音:biéjùyīgé类别:成语释义:别独特的近义词是什么,其它。具,另有。比喻另有一种独特的风格(风味)。出处:清·吕留良《与施愚山书》:“咏见赠诗,风力又

    生活 2021年10月21日