抓取网页生成电子书(使用python爬虫实现把《廖雪峰的Python教程》转换成PDF的方法和代码)
优采云 发布时间: 2021-10-07 03:27抓取网页生成电子书(使用python爬虫实现把《廖雪峰的Python教程》转换成PDF的方法和代码)
本文与您分享使用Python crawler将廖雪峰的Python教程转换为PDF的方法和代码。如果你需要它,你可以参考它
似乎没有比使用python更好的方法来编写爬虫程序。python社区提供了许多让您眼花缭乱的爬虫工具。可以直接使用的各种库可以在几分钟内编写一个爬虫程序。今天,我想写一个爬虫程序,把廖雪峰的Python程序下载到PDF电子书中,供离线阅读
在编写爬虫程序之前,让我们首先分析网站1的页面结构。页面左侧是教程的目录大纲。每一个URL对应于右边的“@ K7@”,“@ K7@”的标题位于右上方,“@ K7@”的主体部分位于中间。正文内容是我们关注的焦点。我们想要爬升的数据是所有网页的主体部分,下面是用户的评论区。评论区对我们来说是无用的,所以我们可以忽略它
工具准备
一旦理解了网站的基本结构,就可以开始准备爬虫程序所依赖的工具包。请求和漂亮的汤是爬虫的两个工件。Reuqests用于网络请求,Beauty soup用于操作HTML数据。有了这两架航天飞机,我们可以快速工作。我们不需要像scratch这样的爬行动物框架。这有点像在小程序中用牛刀杀鸡。此外,由于它是将HTML文件转换为PDF,因此还需要相应的库支持。Wkhtmltopdf是一个非常好的工具。它可以将HTML转换为适合多平台的PDF。Pdfkit是wkhtmltopdf的python包。首先,安装以下依赖项包
接下来,安装wkhtmltopdfip安装请求
pip安装美化组
pip安装pdfkit
安装wkhtmltopdf
windows平台直接从wkhtmltopdf官方网站2下载稳定版本进行安装。安装完成后,将程序的执行路径添加到系统环境的$path变量中。否则,如果pdfkit找不到wkhtmltopdf,则会出现错误“找不到wkhtmltopdf可执行文件”。Ubuntu和CentOS可以直接从命令行$sudo apt get install wkhtmltopdf#Ubuntu安装
$sudo yum intsall wkhtmltopdf#centos
爬虫实现
当一切准备就绪时,您可以编写代码,但在编写代码之前,您应该先清理头脑。该程序的目的是在本地保存与所有URL对应的HTML正文,然后使用pdfkit将这些文件转换为PDF文件。让我们把任务分成两部分。首先,在本地保存与URL对应的HTML正文,然后查找所有URL以执行相同的操作
使用Chrome浏览器查找页面主体部分的标签,然后按F12查找与主体对应的p标签:
,这是网页的正文内容。在本地加载整个页面的请求后,可以使用Beauty soup操作HTML的DOM元素来提取正文内容
具体实现代码如下:use soup.find uuAll函数查找body标记并将body部分的内容保存到a.html文件中。def解析url到html(url):
response=requests.get(url)
soup=BeautifulSoup(response.content,“html5lib”)
body=soup.find uAll(class=“x-wiki-content”)[0]
html=str(正文)
以open(“a.html”,“wb”)作为f:
f、 编写(html)
第二步是解析页面左侧的所有URL。同样,找到左侧的菜单选项卡
具体代码实现了逻辑:页面上有两个类属性UK NAV UK NAV side,第二个是真实目录列表。所有URL都被获取,并且在第一步中还编写了URL到HTML的函数。def get_uuURL_uuu列表():
“”“
获取所有URL目录的列表
“”“
response=requests.get(“”)
soup=BeautifulSoup(response.content,“html5lib”)
menu_uTag=soup.find_uuAll(class=“uk nav uk nav side”)[1]
URL=[]
对于菜单中的li uTag.find uuAll(“li”):