Python爬虫实战,怎么着用Python把网站上边的文书档案教程制作成PDF

By admin in 4858.com on 2019年3月26日

4858.com 1

4858.com,python爬虫达成教程转换到 PDF 电子书,python爬虫

写爬虫仿佛没有比用 Python 更适于了,Python
社区提供的爬虫工具多得让你眼花缭乱,各个拿来就足以一贯用的 library
分分钟就可以写出叁个爬虫出来,后天就雕刻着写四个爬虫,将廖雪峰的 Python
教程 爬下来做成 PDF 电子书方便大家离线阅读。

始发写爬虫前,大家先来分析一下该网站1的页面结构,网页的左手是学科的目录大纲,每一个U奥迪Q5L
对应到右侧的一篇文章,右边上方是小说的标题,中间是小说的正文部分,正文内容是大家关注的最首要,大家要爬的数码就是全体网页的正文部分,下方是用户的评论区,评论区对大家不妨用,所以能够忽略它。

4858.com 2

工具准备

弄明白了网站的主导构造后就足以初叶准备爬虫所依靠的工具包了。requests、beautifulsoup
是爬虫两大神器,reuqests 用于网络请求,beautifusoup 用于操作 html
数据。有了那两把梭子,干起活来利索,scrapy
那样的爬虫框架大家就绝不了,小程序派上它稍微杀鸡用牛刀的意味。其余,既然是把
html 文件转为 pdf,那么也要有相应的库补助, wkhtmltopdf
就是一个卓越好的工具,它能够用适用于多平台的 html 到 pdf 的更换,pdfkit
是 wkhtmltopdf 的Python封装包。首先安装好下边包车型客车依靠包,

继而安装 wkhtmltopdf

pip install requests
pip install beautifulsoup
pip install pdfkit

安装 wkhtmltopdf

Windows平台直接在 wkhtmltopdf
官网2下载稳定版的拓展设置,安装到位之后把该程序的履行路径出席到系统环境
$PATH 变量中,否则 pdfkit 找不到 wkhtmltopdf 就出现错误 “No wkhtmltopdf
executable found”。Ubuntu 和 CentOS 能够平昔用命令行举行设置

$ sudo apt-get install wkhtmltopdf # ubuntu
$ sudo yum intsall wkhtmltopdf   # centos

爬虫完成

凡事准备得当后就能够上代码了,不过写代码以前照旧先收拾一下思路。程序的目标是要把富有
U宝马X5L 对应的 html 正文部分保存到当地,然后使用 pdfkit 把那么些文件转换来二个pdf 文件。大家把职务拆分一下,首先是把某三个 U卡宴L 对应的 html
正文物保护存到地头,然后找到全体的 U普拉多L 执行同样的操作。

用 Chrome 浏览器找到页面正文部分的标签,按 F12 找到正文对应的 div
标签: <div >,该 div 是网页的正文内容。用 requests
把整体页面加载到地方后,就能够运用 beautifulsoup 操作 HTML 的 dom 成分来提取正文内容了。

4858.com 3
实际的完结代码如下:用 soup.find_Python爬虫实战,怎么着用Python把网站上边的文书档案教程制作成PDF。all
函数找到正文标签,然后把正文部分的内容保留到 a.html 文件中。

def parse_url_to_html(url):
  response = requests.get(url)
  soup = BeautifulSoup(response.content, "html5lib")
  body = soup.find_all(class_="x-wiki-content")[0]
  html = str(body)
  with open("a.html", 'wb') as f:
    f.write(html)

其次步便是把页面左边全数 UHavalL 解析出来。选择同一的法门,找到
左边菜单标签 <ul >

4858.com 4

切切实实代码达成逻辑:因为页面上有多少个uk-nav uk-nav-side的 class
属性,而真正的目录列表是第3个。全数的 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 文件就生成了,效果图:

4858.com 5

总结

累计代码量加起来不到50行,然则,且慢,其实上边给出的代码省略了一些细节,比如,怎样取得小说的标题,正文内容的
img 标签使用的是相对路径,假诺要想在 pdf
中寻常彰显图片就必要将相对路径改为相对路径,还有保存下来的 html
权且文件都要去除,那么些细节末叶都位居github上。

完整代码能够上github下载 ,代码在 Windows 平台亲测有效,欢迎 fork
下载自个儿革新。github 地址3,GitHub访问不了的同窗能够用码云4, 《廖雪峰的
Python 教程》电子书 PDF 文件能够通过关注本公众号『三个程序员的微站』回复
“pdf” 免费下载阅读。

PDF 电子书,python爬虫
写爬虫如同没有比用 Python 更适于了,Python
社区提供的爬虫工具多得让你眼花缭乱,种种拿…

  写爬虫就像是没有比用 Python 更方便了,Python
社区提供的爬虫工具多得让你眼花缭乱,各类拿来就足以一向用的 library
分分钟就能够写出八个爬虫出来,明天就雕刻着写一个爬虫,将廖雪峰的 Python
教程 爬下来做成 PDF 电子书方便大家离线阅读。
  
  起初写爬虫前,我们先来分析一下该网站1的页面结构,网页的左手是学科的目录大纲,每一种U帕杰罗L
对应到左侧的一篇文章,左侧上方是小说的标题,中间是小说的正文部分,正文内容是大家关怀的根本,大家要爬的多寡正是持有网页的正文部分,下方是用户的评论区,评论区对大家不妨用,所以能够忽略它。

  写爬虫就像没有比用 Python 更妥帖了,Python
社区提供的爬虫工具多得让您眼花缭乱,种种拿来就能够直接用的 library
分分钟就足以写出三个爬虫出来,前几天就雕刻着写一个爬虫,将廖雪峰的 Python
教程 爬下来做成 PDF 电子书方便大家离线阅读。
  
  起首写爬虫前,我们先来分析一下该网站1的页面结构,网页的左手是学科的目录大纲,各样UTiggoL
对应到右侧的一篇文章,左侧上方是文章的标题,中间是作品的正文部分,正文内容是我们关怀的显要,大家要爬的多少正是具有网页的正文部分,下方是用户的评论区,评论区对我们不妨用,所以能够忽略它。

 

4858.com 6

4858.com 7

人生苦短,小编用Python。那句话作者仅仅只是说说而已,Python丰富的库,意味着Python写代码的频率比任何的编制程序语言高出好几倍。Python的应用领域也特意的广,比如:web开发、爬虫、自动化测试/运转、测试/运行开发、大数目、数据解析、人工智能、机器学习等等。假诺你是想要爬取网上多少以来,那一定正是用Python了呀,毕竟很强大。

  工具准备
  
  弄精通了网站的骨干协会后就足以开首准备爬虫所依靠的工具包了。requests、beautifulsoup
是爬虫两大神器,reuqests 用于互连网请求,beautifusoup 用于操作 html
数据。有了那两把梭子,干起活来利索,scrapy
那样的爬虫框架大家就无须了,小程序派上它稍微杀鸡用牛刀的意思。其余,既然是把
html 文件转为 pdf,那么也要有照应的库辅助, wkhtmltopdf
正是3个万分好的工具,它能够用适用于多平台的 html 到 pdf 的转换,pdfkit
是 wkhtmltopdf 的Python封装包。首先安装好下边包车型客车借助包,接着安装
wkhtmltopdf

  工具准备
  
  弄掌握了网站的主干组织后就足以开头准备爬虫所依靠的工具包了。requests、beautifulsoup
是爬虫两大神器,reuqests 用于互联网请求,beautifusoup 用于操作 html
数据。有了那两把梭子,干起活来利索,scrapy
那样的爬虫框架大家就不用了,小程序派上它有点杀鸡用牛刀的情致。别的,既然是把
html 文件转为 pdf,那么也要有照应的库协助, wkhtmltopdf
正是三个可怜好的工具,它能够用适用于多平台的 html 到 pdf 的转换,pdfkit
是 wkhtmltopdf 的Python封装包。首先安装好下边包车型地铁依赖包,接着安装
wkhtmltopdf

假定您必要二个美好的求学交流条件,那么你能够设想Python学习调换群:548377875;

万一你必要一份系统的就学材质,那么您能够考虑Python学习调换群:548377875。

pip install requests
pip install beautifulsoup
pip install pdfkit
pip install requests
pip install beautifulsoup
pip install pdfkit

学学Python的朋友都晓得”廖雪峰”,也都会在上头看教程,不过接连用网页看觉得尤其麻烦,前天作者就用Python把”廖雪峰”的教程制作成PDF,那样离线也能得以看了!

  安装 wkhtmltopdf
  
  Windows平台直接在 wkhtmltopdf
官网2下载稳定版的展开设置,安装到位之后把该程序的实施路径参预到系统环境
$PATH 变量中,不然 pdfkit 找不到 wkhtmltopdf 就出现错误 “No wkhtmltopdf
executable found”。Ubuntu 和 CentOS 能够直接用命令行进行设置

  安装 wkhtmltopdf
  
  Windows平台直接在 wkhtmltopdf
官网2下载稳定版的开展设置,安装到位之后把该程序的推行路径到场到系统环境
$PATH 变量中,不然 pdfkit 找不到 wkhtmltopdf 就应运而生错误 “No wkhtmltopdf
executable found”。Ubuntu 和 CentOS 能够一向用命令行进行设置

4858.com 8

$ sudo apt-get install wkhtmltopdf  # ubuntu
$ sudo yum intsall wkhtmltopdf      # centos
$ sudo apt-get install wkhtmltopdf  # ubuntu
$ sudo yum intsall wkhtmltopdf      # centos

 

  爬虫达成
  
  一切准备稳妥后就足以上代码了,不过写代码从前照旧先整理一下思路。程序的指标是要把拥有
U科雷傲L 对应的 html 正文部分保存到地面,然后接纳 pdfkit 把这一个文件转换到二个pdf 文件。大家把职务拆分一下,首先是把某1个 U奇骏L 对应的 html
正文物保护存到当地,然后找到全体的 U奔驰G级L 执行同一的操作。
  
  用 Chrome 浏览器找到页面正文部分的标签,按 F12 找到正文对应的 div
标签: <div class=”x-wiki-content”>,该 div 是网页的正文内容。用
requests 把全副页面加载到当地后,就足以选拔 beautifulsoup 操作 HTML 的
dom 元素 来提取正文内容了。

  爬虫达成
  
  一切准备伏贴后就足以上代码了,但是写代码以前依然先整理一下思路。程序的目标是要把富有
UGL450L 对应的 html 正文部分保存到地点,然后使用 pdfkit 把那么些文件转换到二个pdf 文件。我们把义务拆分一下,首先是把某贰个 U奥迪Q5L 对应的 html
正文物保护存到本地,然后找到全数的 UCR-VL 执行同样的操作。
  
  用 Chrome 浏览器找到页面正文部分的标签,按 F12 找到正文对应的 div
标签: <div class=”x-wiki-content”>,该 div 是网页的正文内容。用
requests 把全数页面加载到本地后,就能够运用 beautifulsoup 操作 HTML 的
dom 元素 来提取正文内容了。

明日笔者便是用Python爬虫中格外常用的多少个模块,也是爬虫的两大神器了

4858.com 9

4858.com 10

Requests和beautifulsoup

    具体的完毕代码如下:用 soup.find_all
函数找到正文标签,然后把正文部分的情节保留到 a.html 文件中。

    具体的落到实处代码如下:用 soup.find_all
函数找到正文标签,然后把正文部分的始末保留到 a.html 文件中。

率先大家必要做的正是先安装这八个模块

 

 

  • Pip install requests
  • Pip install beautifulsoup
def parse_url_to_html(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html5lib")
    body = soup.find_all(class_="x-wiki-content")[0]
    html = str(body)
    with open("a.html", 'wb') as f:
        f.write(html)
def parse_url_to_html(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html5lib")
    body = soup.find_all(class_="x-wiki-content")[0]
    html = str(body)
    with open("a.html", 'wb') as f:
        f.write(html)

既然如此要把网页的html转换成PDF那么也要索要pdfkit那些模块的,和方面一样的装置方式。

    第贰步正是把页面左边全部 UPRADOL 解析出来。选择同一的法子,找到
右侧菜单标签 <ul class="uk-nav uk-nav-side">

    第叁步正是把页面左边全部 UPAJEROL 解析出来。选用相同的章程,找到
左边菜单标签 <ul class="uk-nav uk-nav-side">

接下去便是爬虫的着力的流程了

 

 

先在浏览器里面利用开发者工具(F12)找到正文的div标签,然后用requests获取整个页面数据,在用beautifulsoup提取正文内容。

4858.com 11

4858.com 12

不难明了

    具体代码实现逻辑:因为页面上有七个uk-nav uk-nav-side的 class
属性,而真正的目录列表是第三个。全体的 url 获取了,url 转 html
的函数在首先步也写好了。

    具体代码完成逻辑:因为页面上有八个uk-nav uk-nav-side的 class
属性,而真的的目录列表是第①个。全部的 url 获取了,url 转 html
的函数在率先步也写好了。

4858.com 13

 
  Python3-廖雪峰带标签完整版pdf下载:

 
  Python3-廖雪峰带标签完整版pdf下载:

 

def get_url_list():
    """
    获取所有URL目录列表
    """
    response = requests.get("http://www.gooln.com/document/161286.html")
    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.gooln.com/" + li.a.get('href')
        urls.append(url)
    return urls
def get_url_list():
    """
    获取所有URL目录列表
    """
    response = requests.get("http://www.gooln.com/document/161286.html")
    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.gooln.com/" + li.a.get('href')
        urls.append(url)
    return urls

左手的目录也得以用同样的措施找到。

 

 

贯彻源码

4858.com 14

 

 最后一步就是把 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)
 最后一步就是把 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)

效果图

4858.com 15

 

 

    执行 save_pdf 函数,电子书 pdf 文件就生成了,效果图:

    执行 save_pdf 函数,电子书 pdf 文件就生成了,效果图:

4858.com 16

4858.com 17

 

 

  总结
  
  总共代码量加起来不到50行,不过,且慢,其实上面给出的代码省略了一些细节,比如,怎样获取小说的标题,正文内容的
img 标签使用的是相对路径,假若要想在 pdf
中不奇怪展现图片就要求将相对路径改为相对路径,还有保存下来的 html
近来文件都要删减,这一个细节末叶都位于github上。
  
  完整代码能够上github下载 ,代码在 Windows 平台亲测有效,欢迎 fork
下载自个儿创新。github 地址3,GitHub访问不了的校友能够用码云4, 《廖雪峰的
Python 教程》电子书 PDF 文件能够因而关怀本公众号『2个程序员的微站』回复
“pdf” 免费下载阅读。

  总结
  
  总共代码量加起来不到50行,可是,且慢,其实上边给出的代码省略了一些细节,比如,怎么样收获小说的题目,正文内容的
img 标签使用的是相对路径,要是要想在 pdf
中平常突显图片就供给将绝对路径改为相对路径,还有保存下去的 html
权且文件都要去除,这么些细节末叶都位居github上。
  
  完整代码能够上github下载 ,代码在 Windows 平台亲测有效,欢迎 fork
下载自身革新。github 地址3,GitHub访问不了的同窗能够用码云4, 《廖雪峰的
Python 教程》电子书 PDF 文件能够通过关切本公众号『三个程序员的微站』回复
“pdf” 免费下载阅读。

 
 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有