抓取网页生成电子书(calibre网站的在线帮助文档无疑是最基本的学习资源)
优采云 发布时间: 2021-11-04 13:03抓取网页生成电子书(calibre网站的在线帮助文档无疑是最基本的学习资源)
Calibre 可以捕获网页并生成各种格式的电子书。实现方法可以使用GUI,通过输入一些数据,可以实现比较简单的页面自动爬取。主要用于RSS。您还可以使用高级功能来实现更复杂的网页抓取。但是,要抓取一些更复杂的网页内容,还是需要自动编写一个PYTHON程序,即写菜谱。calibre网站 的在线帮助文件无疑是最基础的学习资源。
主要学习资料有3个,就是Adding your 最喜爱的新闻网站,介绍了爬取网页的基本方法。API 文档 forrecipes 介绍了基本的配方编写接口 (API),包括参数设置和方法调用。其实就是研究子类的接口,然后再研究一些recipe例子。学习完这些内容后,您应该可以完成食谱的准备工作了。当然,因为菜谱是用python写的,所以学习python是必不可少的。这里我只想介绍一下我自己学习界面的心得:
写菜谱,学会设置界面参数是第一步。其实通过参数设置,可以抓取一些简单的网页,生成一定质量的电子书。
API中列出了48个接口参数,并做了一些说明。更多细节,你可以查看源代码。源码前面部分定义了这48个参数,并有更详细的解释。其中一些参数是可独立设置的,而另一些则是相互排斥的。如果设置了一个,另一个将不起作用。如果设置为 true,有些需要实现一个方法。大致如下:
1、title =_('未知消息来源')
通常设置生成的电子书的标题。
2、描述=你''
使用几行文本来描述此配方捕获的内容。一开始是GUI界面下的一系列菜谱描述。
3、__author__= __appname__
这个食谱的作者
4、requires_version= (0,6,0)
执行此配方所需的最低 calibre 版本,默认为 0.6.0
5、language='und'
网页内容使用的语言必须符合 ISO-639 编码,长度为 2-3 个字符。
6、max_articles_per_feed = 100
当没有 文章 日期时,使用每个提要可以下载的最大 文章 数。默认为100。 文章 old_article 参数通常在有日期时使用。
7、oldest_article= 7.0
最早下载的 文章 是几天前下载的。默认为 7 天,单位为天。如果 文章 有日期,则此参数有效。
8、递归= 0
网页中链接的递归级别。默认是不递归下载。
9、延迟=0
连续下载时,两次下载之间的时间间隔用浮点数表示,单位为秒。
10、publication_type='未知'
出版物类型,抓取的内容类型,包括报纸(newspaper)、杂志(magazine)、博客(blog)等。如果设置为None,则没有类型。此参数将用作元数据并写入 opf 文件。
11、simultaneous_downloads=5
同时下载的次数,如果服务器有限制,设置为1小时。当delay`> 0时,自动减为1,默认值为5
12、超时= 120.0
从服务器下载的最大时间限制,超过这个时间就是超时。单位为秒,默认为 120 秒。
13、timefmt='[%a, %d %b%Y]
首页显示的日期格式,默认格式为日、月、年
14、feeds=无
用于下载的提要可以是 ``[url1,url2, ...]'' 或 ``[('title1', url1), ('title2', url2),. . .]``两种形式。
15、summary_length = 500
简短描述中的最大字符数。默认值为 500 个字符。
16、no_stylesheets = False
标识是否下载和使用原创网页的样式表。默认是下载使用。设置为 True 时,将不会下载和使用原创样式表。
17、remove_javascript=真
是否从下载的网页中删除 javascript 脚本。默认是删除脚本。
18、needs_subscription=假
下载时是否登录,如果为True,GUI界面会询问登录用户名和密码。如果设置为“可选”,则登录名和密码是可选的。
19、center_navbar = True
生成的电子书目录是否居中对齐。默认为居中对齐,False 为左对齐。
20、编码=无
如果网页的字符集编码不正确,字符集编码集通常为“latin1”和“cp1252”。如果设置为 None,代码将被自动检测。如果是可调用的,调用时有两个参数,recipe对象和解码后的源文件,返回解码后的源文件。
21、use_embedded_content = 无
一般情况下,我们根据嵌入内容的长度来推测feed会嵌入文章的所有内容。该参数具有三个值。当它设置为 None 时,会进行猜测;当设置为True时,则假定feed收录文章的所有嵌入内容;当它设置为 False 时,提要不收录 文章 的嵌入内容。
22、articles_are_obfuscated=假
默认为False,文章更方便抓取。如果设置为True,则表示文章不容易爬取,比较难爬取的文章页面会通过实现get_obfuscated_article方法来处理。
23、reverse_article_order=假
设置为 True 时,Feed 中 文章 的顺序将被颠倒。