当前位置:首页 > 技术手札 > 正文内容

carlibre抓取网页内容生成电子书

秋风渡红尘8年前 (2018-06-27)技术手札3166
#!/usr/bin/python
# encoding: utf-8
from calibre.web.feeds.recipes import BasicNewsRecipe
class Pro_Git_Chinese(BasicNewsRecipe):

    title = 'QCustomplot'
    description = 'QCustomplot介绍'
    cover_url = ''
    _author_ = '朝十晚八'

    url_pre = 'https://www.cnblogs.com/swarmbees/category/908110.html'
    no_stylesheets = True #去除css
    keep_only_tags = [{ 'class': 'blogpost-body' }] #仅在blogpost-body里面查找
    simultaneous_downloads = 1 #最大下载线程,默认为5

    def parse_index(self):
# recipe的核心method,通过分析目录页,找到各页面链接,并抓取内容,返回一个较复杂的数据结构
        soup = self.index_to_soup(self.url_pre)#目录页
	#查找div,其class属性为entrylist,因为列表是处于<div class="entrylist">容器中
        div = soup.find('div', {'class': 'entrylist'})#目录页的寻找范围

        articles = []
        for link in div.findAll('a', id=True):#循环查找标签a,且其id要为真。
            til = link.contents[0].strip() #获取标题,去除空格
            url = link['href'] #获取标题的链接
            a = { 'title': til, 'url': url }
            articles.insert(0,a) #append(a)是在列表末尾追加,现在改成insert(0,a)在列表前面插入
        results = [(self.title, articles)] #结果由标题和文章组成
        return results

--------------------------------------------------------------------------------------------------------------------


#!/usr/bin/python
# encoding: utf-8
from calibre.web.feeds.recipes import BasicNewsRecipe
class Pro_Git_Chinese(BasicNewsRecipe):

    title = 'QT学习之路2'
    description = ''
    __author__ = '豆子'
    cover_url = ''
    simultaneous_downloads = 5

    url_pre = 'https://www.devbean.net/2012/08/qt-study-road-2-catelog/'
    no_stylesheets = True
    remove_javascript = True
    keep_only_tags = [{ 'class': 'thecontent clearfix' }]

    def parse_index(self):
# recipe的核心method,通过分析目录页,找到各页面链接,并抓取内容,返回一个较复杂的数据结构
        soup = self.index_to_soup(self.url_pre)#目录页

        div = soup.find('ol')#目录页的寻找范围
	
        articles = []
        for link in div.findAll('a'):
            til = link.contents[0].strip()
            url = link['href']
            a = { 'title': til, 'url': url}

            articles.append(a)

        results = [(self.title, articles)]

        return results


扫描二维码推送至手机访问。

版权声明:本文由咿呀贝发布,如需转载请注明出处。

本文链接:https://yiyabei.cn/?id=22

标签: calibre
分享给朋友:

相关文章

Firefox之不安全的连接

Firefox之不安全的连接

        今天打开电脑,使用firefox搜索点东西,结果提示:     www.baidu.com 的管...

如何禁用Firefox火狐浏览器的“不安全密码警告”

如何禁用Firefox火狐浏览器的“不安全密码警告”

Step1: 打开firefox,在地址栏敲:about:config 此时会跳出:“这可能是质量保证失效”的页面,点击“我了解此风险” Step2: 在配置页面的顶部搜索栏里敲:...

360随身wifi 3代当作无线网卡无法联网

360随身wifi 3代当作无线网卡无法联网

前置条件: 无线网卡硬件 360随身WIFI 3代 驱动...

AUTOCAD2018无法启动及启动后界面闪烁

AUTOCAD2018无法启动及启动后界面闪烁

AUTOCAD2018安装完毕后启动时无法进入主界面就报错“autocad application 已停止工作”。 用管理员身份或者兼容模式运行,会在进入主界面之前自动退出程序。 通过visualsutio调试,发现问题出现在nvwgf...

QT编译的程序中文乱码

QT编译的程序中文乱码

在主程序加入 QTextCodec::setCodecForLocale(QTextCodec::codecForName("utf-8"));...