美文网首页python社区
Python爬取网站博客教程并制作成PDF

Python爬取网站博客教程并制作成PDF

作者: 9ba4bd5525b9 | 来源:发表于2019-07-25 20:48 被阅读34次

    要把教程变成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("<html>data</html>")

    首先,文档被转换成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<title>The Dormouse's story</title>

    The Dormouse's story

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

    <head><title>The Dormouse's story</title></head>

    如果 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。

    https://wkhtmltopdf.org/downloads.html

    pdfkit

    shell pip3 install pdfkit

    转换url/file/string

    完整代码

    运行过程截图:

    生成的效果图:

    The Dormouse's story

    相关文章

      网友评论

        本文标题:Python爬取网站博客教程并制作成PDF

        本文链接:https://www.haomeiwen.com/subject/esvkrctx.html