抓取网页生成电子书(廖雪峰:Python教程爬下来做成PDF电子书方便离线阅读)

优采云 发布时间: 2021-10-08 19:27

  抓取网页生成电子书(廖雪峰:Python教程爬下来做成PDF电子书方便离线阅读)

  免责声明:本文仅供学习参考,不得用于其他用途。爬取过程中注意控制请求速度,以免给服务器造成太大压力

  写爬虫好像不比用Python好。Python社区提供的爬虫工具之多,看得你眼花缭乱。你可以用各种可以直接使用的库在几分钟内编写一个爬虫。今天,我将尝试写一个爬虫。廖雪峰老师的Python教程爬下来制作了PDF电子书供离线阅读。

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

  

  工具准备

  搞清楚网站的基本结构后,就可以开始准备爬虫依赖的工具包了。requests和beautifulsoup是爬虫的两大神器,reuqests用于网络请求,beautifulsoup用于操作html数据。有了这两个班车,我们就可以顺利工作了。我们不需要像scrapy这样的爬虫框架。小程序有点像大锤。另外,既然是把html文件转换成pdf,就得有相应的库支持。wkhtmltopdf 是一个非常好的工具。它可用于从 html 到 pdf 的多平台转换。pdfkit 是 wkhtmltopdf 的 Python 包。先安装以下依赖包,然后安装wkhtmltopdf

  pip install requests

pip install beautifulsoup4

pip install pdfkit

  安装 wkhtmltopdf

  Windows平台下,直接从wkhtmltopdf官网下载稳定版进行安装。安装完成后,将程序的执行路径添加到系统环境$PATH变量中,否则pdfkit将找不到wkhtmltopdf并出现“No wkhtmltopdf executable found”的错误提示。Ubuntu 和 CentOS 可以直接从命令行安装

  $ sudo apt-get install wkhtmltopdf # ubuntu

$ sudo yum intsall wkhtmltopdf # centos

  爬虫实现

  一切准备就绪后,就可以开始编写代码了,但是在编写代码之前,应该先整理一下思路。该程序的目的是将所有URL对应的html body部分保存在本地,然后使用pdfkit将这些文件转换为pdf文件。让我们拆分任务。首先将某个URL对应的html body保存到本地,然后找到所有的URL进行同样的操作。

  使用Chrome浏览器找到页面body部分的标签,按F12找到body对应的div标签:

  ,div是网页的body内容。使用requests在本地加载整个页面后,可以使用beautifulsoup操作HTML的dom元素来提取body内容。

  

  具体实现代码如下: 使用soup.find_all函数查找body标签,然后将body部分的内容保存到a.html文件中。

  def parse_url_to_html(url):

response = requests.get(url)

soup = BeautifulSoup(response.content, "html.parser")

body = soup.find_all(class_="x-wiki-content")[0]

html = str(body)

with open("a.html", 'wb') as f:

f.write(html)

  第二步是解析出页面左侧的所有URL。同样的方法,找到左边的菜单标签

  社会的

  链接

  © foofish 2016

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线