威尼斯人线上娱乐

怎么用Python把网址下面的文档教程制作成PDF,将网页转换为pdf电子书

11 4月 , 2019  

威尼斯人线上娱乐 1

python爬虫完成教程转换来 PDF 电子书,python爬虫

写爬虫就如未有比用 Python 更贴切了,Python
社区提供的爬虫工具多得让您眼花缭乱,各个拿来就能够直接用的 library
分分钟就能够写出四个爬虫出来,明天就雕刻着写1个爬虫,将廖雪峰的 Python
教程 爬下来做成 PDF 电子书方便大家离线阅读。

始发写爬虫前,大家先来分析一下该网址一的页面结构,网页的左侧是课程的目录大纲,各个U奥德赛L
对应到右侧的1篇文章,左侧上方是小说的标题,中间是作品的正文部分,正文内容是大家关怀的根本,大家要爬的数码就是拥有网页的正文部分,下方是用户的评论区,评论区对我们不妨用,所以能够忽略它。

威尼斯人线上娱乐 2

工具准备

弄精通了网址的为主组织后就足以发轫准备爬虫所正视的工具包了。requests、beautifulsoup
是爬虫两大神器,reuqests 用于互联网请求,beautifusoup 用于操作 html
数据。有了那两把梭子,干起活来利索,scrapy
这样的爬虫框架大家就无须了,小程序派上它稍微杀鸡用牛刀的意趣。其它,既然是把
html 文件转为 pdf,那么也要有照应的库支持, wkhtmltopdf
正是3个可怜好的工具,它能够用适用于多平台的 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翼虎L 对应的 html 正文部分保存到本地,然后使用 pdfkit 把那些文件转换来一个pdf 文件。大家把任务拆分一下,首先是把某四个 U中华VL 对应的 html
正文物保护存到地面,然后找到全体的 UENCOREL 执行同样的操作。

用 Chrome 浏览器找到页面正文部分的价签,按 F1二 找到正文对应的 div
标签: <div >,该 div 是网页的正文内容。用 requests
把全部页面加载到当地后,就足以选拔 beautifulsoup 操作 HTML 的 dom 成分来提取正文内容了。

威尼斯人线上娱乐 3
现实的落实代码如下:用 soup.find_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)

第2步就是把页面左边全数 U奥迪Q7L 解析出来。选拔相同的艺术,找到
左边菜单标签 <ul >

威尼斯人线上娱乐 4

切切实实代码达成逻辑:因为页面上有五个uk-nav uk-nav-side的 class
属性,而实在的目录列表是第2个。全数的 url 获取了,url 转 html
的函数在第1步也写好了。

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 文件就生成了,效果图:

威尼斯人线上娱乐 5

总结

一起代码量加起来不到50行,但是,且慢,其实上面给出的代码省略了某个细节,比如,怎样获得作品的标题,正文内容的
img 标签使用的是相对路径,倘诺要想在 pdf
中平常呈现图片就须求将相对路径改为绝对路径,还有保存下去的 html
近年来文件都要去除,这么些细节末叶都坐落github上。

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

PDF 电子书,python爬虫
写爬虫仿佛从未比用 Python 更适用了,Python
社区提供的爬虫工具多得让您眼花缭乱,种种拿…

  写爬虫就像并未有比用 Python 更方便了,Python
社区提供的爬虫工具多得让你眼花缭乱,各个拿来就足以一贯用的 library
分分钟就足以写出三个爬虫出来,明日就雕刻着写1个爬虫,将廖雪峰的 Python
教程 爬下来做成 PDF 电子书方便我们离线阅读。
  
  初步写爬虫前,大家先来分析一下该网址一的页面结构,网页的左边是课程的目录大纲,各个U奥迪Q7L
对应到右侧的壹篇小说,右边上方是文章的标题,中间是小说的正文部分,正文内容是我们关切的主要,大家要爬的数目就是拥有网页的正文部分,下方是用户的评论区,评论区对大家不妨用,所以能够忽略它。

怎么用Python把网址下面的文档教程制作成PDF,将网页转换为pdf电子书。  写爬虫就好像从未比用 Python 更合适了,Python
社区提供的爬虫工具多得让您眼花缭乱,种种拿来就足以直接用的 library
分秒钟就能够写出贰个爬虫出来,前几天就雕刻着写一个爬虫,将廖雪峰的 Python
教程 爬下来做成 PDF 电子书方便我们离线阅读。
  
  初步写爬虫前,大家先来分析一下该网址壹的页面结构,网页的左手是学科的目录大纲,种种U奥德赛L
对应到左边的一篇小说,右边上方是小说的题目,中间是作品的正文部分,正文内容是大家关切的首要性,大家要爬的数码正是装有网页的正文部分,下方是用户的评论区,评论区对我们不要紧用,所以能够忽略它。

 

威尼斯人线上娱乐 6

威尼斯人线上娱乐 7

人生苦短,笔者用Python。那句话小编仅仅只是说说而已,Python丰富的库,意味着Python写代码的功能比此外的编制程序语言高出好数倍。Python的应用领域也专程的广,比如:web开发、爬虫、自动化测试/运转、测试/运行开发、大数目、数据解析、人工智能、机器学习等等。假使你是想要爬取网上数据的话,那肯定正是用Python了哟,毕竟很强劲。

  工具准备
  
  弄精晓了网址的基本构造后就能够起来准备爬虫所注重的工具包了。requests、beautifulsoup
是爬虫两大神器,reuqests 用于网络请求,beautifusoup 用于操作 html
数据。有了那两把梭子,干起活来利索,scrapy
那样的爬虫框架大家就无须了,小程序派上它有点杀鸡用牛刀的意味。其余,既然是把
html 文件转为 pdf,那么也要有对应的库扶助, wkhtmltopdf
就是一个丰裕好的工具,它可以用适用于多平台的 html 到 pdf 的转换,pdfkit
是 wkhtmltopdf 的Python封装包。首先安装好上边包车型客车依赖包,接着安装
wkhtmltopdf

  工具准备
  
  弄驾驭了网址的中坚构造后就能够初叶准备爬虫所信赖的工具包了。requests、beautifulsoup
是爬虫两大神器,reuqests 用于网络请求,beautifusoup 用于操作 html
数据。有了那两把梭子,干起活来利索,scrapy
那样的爬虫框架我们就不用了,小程序派上它有个别杀鸡用牛刀的意味。别的,既然是把
html 文件转为 pdf,那么也要有相应的库辅助, wkhtmltopdf
正是3个特出好的工具,它能够用适用于多平台的 html 到 pdf 的转移,pdfkit
是 wkhtmltopdf 的Python封装包。首先安装好下边包车型大巴依赖包,接着安装
wkhtmltopdf

即便你供给三个绝妙的求学交换条件,那么您能够设想Python学习沟通群:54837787伍;

如若您必要一份系统的求学资料,那么您能够思量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
官网二下载稳定版的举行安装,安装到位之后把该程序的举行路径插足到系统环境
$PATH 变量中,不然 pdfkit 找不到 wkhtmltopdf 就应运而生谬误 “No wkhtmltopdf
executable found”。Ubuntu 和 CentOS 能够直接用命令行进行设置

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

威尼斯人线上娱乐 8

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

 

威尼斯人线上娱乐 ,  爬虫完毕
  
  1切准备伏贴后就足以上代码了,但是写代码以前依然先收10一下思路。程序的目标是要把具备
U瑞鹰L 对应的 html 正文部分保存到地点,然后选拔 pdfkit 把那个文件转换到2个pdf 文件。大家把职务拆分一下,首先是把某3个 U凯雷德L 对应的 html
正文保存到本地,然后找到全体的 U福特ExplorerL 执行同1的操作。
  
  用 Chrome 浏览器找到页面正文部分的价签,按 F1二 找到正文对应的 div
标签: <div class=”x-wiki-content”>,该 div 是网页的正文内容。用
requests 把整个页面加载到本地后,就足以动用 beautifulsoup 操作 HTML 的
dom 成分 来提取正文内容了。

  爬虫实现
  
  1切准备妥善后就足以上代码了,但是写代码在此之前依然先整理一下思路。程序的目标是要把富有
U揽胜L 对应的 html 正文部分保存到地头,然后使用 pdfkit 把这几个文件转换来一个pdf 文件。大家把任务拆分一下,首先是把某二个 ULX570L 对应的 html
正文物保护存到地方,然后找到全数的 U宝马7系L 执行同样的操作。
  
  用 Chrome 浏览器找到页面正文部分的竹签,按 F1二 找到正文对应的 div
标签: <div class=”x-wiki-content”>,该 div 是网页的正文内容。用
requests 把全副页面加载到地头后,就足以应用 beautifulsoup 操作 HTML 的
dom 成分 来提取正文内容了。

今日作者正是用Python爬虫中极其常用的多少个模块,也是爬虫的两大神器了

威尼斯人线上娱乐 9

威尼斯人线上娱乐 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那个模块的,和上边1样的设置格局。

    第1步正是把页面左侧全体 U凯雷德L 解析出来。选用相同的点子,找到
左边菜单标签 <ul class="uk-nav uk-nav-side">

    第一步正是把页面左侧全体 U景逸SUVL 解析出来。选择同壹的艺术,找到
右边菜单标签 <ul class="uk-nav uk-nav-side">

接下去正是爬虫的主干的流程了

 

 

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

威尼斯人线上娱乐 11

威尼斯人线上娱乐 12

简单明了

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

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

威尼斯人线上娱乐 13

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

 
  Python叁-廖雪峰带标签完整版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

右边的目录也能够用同一的不二诀窍找到。

 

 

福寿齐天源码

威尼斯人线上娱乐 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)

效果图

威尼斯人线上娱乐 15

 

 

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

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

威尼斯人线上娱乐 16

威尼斯人线上娱乐 17

 

 

  总结
  
  总共代码量加起来不到50行,可是,且慢,其实上面给出的代码省略了有的细节,比如,怎样赢得小说的题目,正文内容的
img 标签使用的是相对路径,假如要想在 pdf
中经常展现图片就要求将相对路径改为相对路径,还有保存下来的 html
目前文件都要刨除,那一个细节末叶都置身github上。
  
  完整代码可以上github下载 ,代码在 Windows 平台亲测有效,欢迎 fork
下载自个儿创新。github 地址三,GitHub访问不了的同班能够用码云四, 《廖雪峰的
Python 教程》电子书 PDF 文件能够经过关怀本公众号『四个程序员的微站』回复
“pdf” 免费下载阅读。

  总结
  
  总共代码量加起来不到50行,然则,且慢,其实上边给出的代码省略了一部分细节,比如,如何收获小说的标题,正文内容的
img 标签使用的是绝对路径,假设要想在 pdf
中不奇怪展现图片就须要将相对路径改为相对路径,还有保存下来的 html
权且文件都要去除,那些细节末叶都放在github上。
  
  完整代码能够上github下载 ,代码在 Windows 平台亲测有效,欢迎 fork
下载自个儿立异。github 地址三,GitHub访问不了的同窗能够用码云四, 《廖雪峰的
Python 教程》电子书 PDF 文件能够由此关怀本公众号『2个程序员的微站』回复
“pdf” 免费下载阅读。

 
 

 

 


相关文章

发表评论

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

网站地图xml地图