因为阅读网上的很多电子书存在翻页繁琐和查找不方便的问题,也很难在网站上做笔记。故查阅部分资料想要自己写一个小爬虫,然后可以将爬取到的电子书内容页面(html格式)最终保存成PDF格式。故编写如下爬虫代码来实现此功能。由于Python3和Python2.7的版本兼容性问题,from main import WKhtmlToPdf, wkhtmltopdf 始终未能或者成功,故只在正确爬取了电子书后,我并不能将很好的将已经处理成单页的PDF文件拼接起来合成一个大的PDF文件。但是,条条大路通罗马,我发现Adobe reader9.0可以直接帮助我解决PDF的拆分与合并问题。最终依然可以达到异曲同工的作用!
1.Adobe reader9.0直接做拆分
直接通过Adobe reader9.0打开要拆分的PDF,然后选择"文档">“拆分文档”>页数=1>确定>大功告成!
2.使用Adobe reader9.0直接做合并
“文件”>“合并”>“合并文件到单个PDF”>“添加文件”>通过上移和下调文件位置>合并文件>大功告成!
3.使用爬虫爬取网站电子书的HTML,转换成为PDF后,再做PDF文件的合并
原理很简单:通过查看网页源代码,发现网页布局上感兴趣的标签的规律,然后分别取到一级标题及其URL链接,二级标题及其URL链接,如此进行即可。说到这里,这种嵌套的逻辑使用多层字典即可很好的完成嵌套分层功能。本文爬取的网站为:http://python3-cookbook.readthedocs.io/zh_CN/latest/ ,此网站是学习Python3的最佳如本教程之一。
3.1.代码
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import requests
import random
import time
import pandas as pd
import os
import sys
#from imp import reload
#reload(MyModule)
#from main import WKhtmlToPdf, wkhtmltopdf
#wkhtmltopdf在界面执行失败,所以使用命令行试试。
import re
import pdfkit
from PyPDF2 import PdfFileMerger
def parse_title_and_url(html):
"""
python3-cookbook电子网页转为PDF,提取一二级标题。
"&