要把教程变成PDF有三步:

1、先生成空html,爬取每一篇教程放进一个新生成的div,这样就生成了包含所有教程的html文件(BeautifulSoup)

2、将html转换成pdf(wkhtmltopdf)

3、如果有反爬,在爬取的过程中还需要代理ip

BeautifulSoup

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

安装

pip3 install BeautifulSoup4

开始使用

将一段文档传入 BeautifulSoup 的构造方法,就能得到一个文档的对象, 可以传入一段字符串或一个文件句柄.

如下所示:from bs4 import BeautifulSoup

soup = BeautifulSoup(open("index.html"))

soup = BeautifulSoup("data")

首先,文档被转换成Unicode,并且HTML的实例都被转换成Unicode编码.

然后,Beautiful Soup选择最合适的解析器来解析这段文档,如果手动指定解析器那么Beautiful Soup会选择指定的解析器来解析文档.

对象的种类

Beautiful Soup 将复杂 HTML 文档转换成一个复杂的树形结构,每个节点都是 Python 对象,所有对象可以归纳为 4 种: Tag , NavigableString , BeautifulSoup , Comment .

1、Tag:通俗点讲就是 HTML 中的一个个标签,类似 div,p。

2、NavigableString:获取标签内部的文字,如,soup.p.string。

3、BeautifulSoup:表示一个文档的全部内容。

4、Comment:Comment 对象是一个特殊类型的 NavigableString 对象,其输出的内容不包括注释符号.

Tag

Tag就是html中的一个标签,用BeautifulSoup就能解析出来Tag的具体内容,具体的格式为soup.name,其中name是html下的标签,具体实例如下:

print soup.title输出title标签下的内容,包括此标签,这个将会输出

The Dormouse's story

print soup.head输出head标签下的内容

The Dormouse's story

如果 Tag 对象要获取的标签有多个的话,它只会返回所以内容中第一个符合要求的标签。

Tag 属性

每个 Tag 有两个重要的属性 name 和 attrs:

name:对于Tag,它的name就是其本身,如soup.p.name就是p

attrs是一个字典类型的,对应的是属性-值,如print soup.p.attrs,输出的就是{'class': ['title'], 'name': 'dromouse'},当然你也可以得到具体的值,如print soup.p.attrs['class'],输出的就是[title]是一个列表的类型,因为一个属性可能对应多个值,当然你也可以通过get方法得到属性的,如:print soup.p.get('class')。还可以直接使用print soup.p['class']

wkhtmltopdf

wkhtmltopdf主要用于HTML生成PDF。

pdfkit是基于wkhtmltopdf的python封装,支持URL,本地文件,文本内容到PDF的转换,其最终还是调用wkhtmltopdf命令。

安装

先安装wkhtmltopdf,再安装pdfkit。

pdfkit

shell pip3 install pdfkit

转换url/file/string

完整代码

运行过程截图:

生成的效果图:

python 制作网站教程_Python爬取网站博客教程并制作成PDF相关推荐

  1. python爬取网站新闻_Python爬取网站新闻

    ###准备### 本实例使用辅助工具Fiddler抓取网页数据和使用文档查看工具sublime正则过滤(也可使用其它文档编辑工具),python开发工具使用Pycharm编辑 我们选取搜狐网的新闻页面 ...

  2. python云图制作壮观天体照_Python爬取个人博客,带你制作高逼格的数据聚合云图...

    点击上方"中兴开发者社区",关注我们 每天读一篇一线开发者原创好文 本文出自方志朋的博客 链接:http://blog.csdn.net/forezp/article/detail ...

  3. python制作手机壁纸_Python爬取手机壁纸图片

    使用Python爬取图片. 1 说明 本文通过爬虫程序的编写,实现了一个简单易懂的爬虫程序,方便初学者理解,主要程序分为网页获取函数,以及保存下载函数,这就是所有爬虫程序的基本思想.(本文不涉及反爬, ...

  4. python爬虫第二弹-多线程爬取网站歌曲

    python爬虫第二弹-多线程爬取网站歌曲 一.简介 二.使用的环境 三.网页解析 1.获取网页的最大页数 2.获取每一页的url形式 3.获取每首歌曲的相关信息 4.获取下载的链接 四.代码实现 一 ...

  5. Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸

    Python运用urllib2和BeautifulSoup爬取网站ZOL桌面壁纸上的精美电脑壁纸 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...

  6. 【爬虫+数据可视化】Python爬取CSDN博客访问量数据并绘制成柱状图

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业及非法用途,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/ ...

  7. Python 爬取51cto博客标题浏览量、评论量、收藏

    介绍 提到爬虫,互联网的朋友应该都不陌生,现在使用Python爬取网站数据是非常常见的手段,好多朋友都是爬取豆瓣信息为案例,我不想重复,就使用了爬取51cto博客网站信息为案例,这里以我的博客页面为教 ...

  8. [python爬虫] 正则表达式使用技巧及爬取个人博客实例

    这篇博客是自己<数据挖掘与分析>课程讲到正则表达式爬虫的相关内容,主要简单介绍Python正则表达式爬虫,同时讲述常见的正则表达式分析方法,最后通过实例爬取作者的个人博客网站.希望这篇基础 ...

  9. python爬虫爬取csdn博客专家所有博客内容

    python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 #coding:utf-8import urlli ...

最新文章

  1. sphinx+coreseek创建中文分词索引
  2. 插值算法C实现(一元全区间)
  3. win10内建子系统Linux
  4. 不敢相信?System.currentTimeMillis()存在性能问题
  5. 2.逆向分析Hello World!程序-上
  6. 机房运维很枯燥?来看看中国银行数据中心基础设施可视化运维管理
  7. 录取率查询和申请结果查询平台分享
  8. 没有标题,配得上这款“俄罗斯方块”
  9. [Java基础]反射获取成员变量并使用
  10. 北邮计算机系统结构课件,TEC-8 运算器组成实验(北邮).ppt
  11. 何传启:第六次科技革命的三大“猜想
  12. 数据科学入门与实战:玩转pandas实战项目分析航班晚点情况
  13. antd form rules字数限制_Package - antd-form-rules
  14. 实数在java中的表示,java - 如何在Z3(Java)中从模型中获取实数值作为小数(双精度)? - SO中文参考 - www.soinside.com...
  15. 1117 Eddington Number
  16. B VUE系列 三:vuex,vue全局变量管理和状态更新的利器
  17. 3gpp协议服务器,NR-3GPP协议清单汇总
  18. 计算机恶搞bat代码,电脑重启bat代码怎么设置 电脑整人bat代码大全
  19. 学习通网络看课鼠标不能离开页面问题
  20. 介绍H桥电机驱动电路

热门文章

  1. JavaWeb开发 —— Ajax
  2. 3D 空间中拟合曲线
  3. 沪江日语小D落户博客园~
  4. VS2008单元测试之调用的目标发生了异常
  5. 推荐系统笔记(MAB问题)
  6. SIGIR 2021 | 推荐系统相关论文分类整理
  7. 机器学习案例丨基于广泛和深入的推荐 - 餐厅评级预测
  8. 机器学习面试题之机器学习基础(一)
  9. invalidate()不起作用
  10. 常用模块】HC-05蓝牙串口通信模块使用详解