网站内容抓取(Python,抓取,HTML网页并以PDF文件形式保存的方法)

优采云 发布时间: 2022-01-21 22:01

  网站内容抓取(Python,抓取,HTML网页并以PDF文件形式保存的方法)

  想知道Python实现爬取HTML网页并保存为PDF文件的相关内容吗?在本文中,Limerence将详细讲解Python爬取HTML页面并将其保存为PDF文件的相关知识以及一些代码示例。欢迎阅读指正,我们先重点:Python,抓取,HTML网页,PDF文件,保存,一起学习。

  本文中的示例描述了 Python 如何实现爬取 HTML 网页并将其保存为 PDF 文件。分享给大家,供大家参考,如下:

  一、前言

  今天,我将介绍抓取 HTML 网页并将其保存为 PDF。废话不多说,直接上教程吧。

  今天的例子以廖雪峰老师的Python教程网站为例:

  二、准备工作

  1. PyPDF2的安装和使用(用于合并PDF):

  PyPDF2 版本:1.25.1

  或

  安装:

  

pip install PyPDF2

  使用示例:

  

from PyPDF2 import PdfFileMerger

merger = PdfFileMerger()

input1 = open("hql_1_20.pdf", "rb")

input2 = open("hql_21_40.pdf", "rb")

merger.append(input1)

merger.append(input2)

# Write to an output PDF document

output = open("hql_all.pdf", "wb")

merger.write(output)

  2. requests和beautifulsoup是两大爬虫神器,reuqests用于网络请求,beautifulsoup用于操作html数据。有了这两个穿梭机,工作很容易。我们不需要像scrapy这样的爬虫框架。这样的小程序有点像拿刀杀鸡。另外,由于html文件转换为pdf,所以必须有相应的库支持。 wkhtmltopdf是一个非常好用的工具,可以用于多平台html到pdf的转换,而pdfkit是wkhtmltopdf的Python包。首先安装以下依赖项

  

pip install requests

pip install beautifulsoup4

pip install pdfkit

  3.安装 wkhtmltopdf

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

  

$ sudo apt-get install wkhtmltopdf # ubuntu

$ sudo yum intsall wkhtmltopdf # centos

  三、数据准备

  1. 获取每个文章

  的url

  

def get_url_list():

"""

获取所有URL目录列表

:return:

"""

response = requests.get("http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000")

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

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

  2. 通过 文章url

  用模板保存每个 文章 的 HTML 文件

  html模板:

  

html_template = """

{content}

"""

  保存:

<p>

def parse_url_to_html(url, name):

"""

解析URL,返回HTML内容

:param url:解析的url

:param name: 保存的html文件名

:return: html

"""

try:

response = requests.get(url)

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

# 正文

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

# 标题

title = soup.find('h4').get_text()

# 标题加入到正文的最前面,居中显示

center_tag = soup.new_tag("center")

title_tag = soup.new_tag('h1')

title_tag.string = title

center_tag.insert(1, title_tag)

body.insert(1, center_tag)

html = str(body)

# body中的img标签的src相对路径的改成绝对路径

pattern = "(

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线