calibre抓取“爱上中文”网小说的recipe

        抓取每一个网站的内容,生成 epub往往都有要编写一个recipe。其实大部分的结构是比较类似的,不用太大的变化,尤其一个网站的书箱,可以使用同一个recipe,只要针对每本书,修改一下url,图书的标题,书名,描述就行,以“爱上中文”网为例,其每一本书都有一个目录页,页面中包含了书籍的封面,内容简介,每章的名字,url等。章节目录都在一个<table cellspacing='1'>的标签之中,使用find('table',attrs = {'cellspacing': "1"})就初步包含了目录,再使用findAll('a')把所有的标题和url取出,就可生成feeds。

每个章节的页面中我们只要两个div中的内容就行,一个div class="bdb"是章节名称,一个div id="contents"是章节内容,直接写入keep_only_tags就行。

具体程序如下:

# coding=gbk
from calibre.web.feeds.recipes import BasicNewsRecipe


class jpyx(BasicNewsRecipe):
title = u"绝品医仙"                                  #自己写入书名
description = u"修真天才遭女师祖欺骗让榨干而亡,竟然重生成都市内无恶不作的豪门大少。不是猛龙不过江,不是大少不嚣..."      #自己写入描述
recursions = 0
max_articles_per_feed = 1000
oldest_article = 5000
remove_javascript = True

cover_url = "http://www.aszw.com/files/article/image/35/35901/35901s.jpg"                                           #自己写入封面的URL
url_prefix = "http://www.aszw.com/book/35/35901/"                                                                                       #自己写入每章url的前缀,基本上就是目录页的url
no_stylesheets = True
keep_only_tags =[dict(name='div', attrs={'class':'bdb'}),
dict(name='div', attrs={'id':'contents'}),
]   #要保留的标签



def get_title(self,link):
return link.contents[0].strip()

def parse_index(self):

soup = self.index_to_soup('http://www.aszw.com/book/35/35901/')                                                   #自己写入目录页的url
aa = soup.find('table',attrs = {'cellspacing': "1"}).findAll('a')
articles = []
for link in aa:
title = self.get_title(link)
title = title.encode("utf-8") #处理中文,转换代码
url = self.url_prefix + link['href']
a = {'title':title,'url':url}
articles.append(a)
#print articles
ans = [(u'绝品医仙',articles)]                                                                                                                         #自己写入书名
return ans


这样抓取“爱上中文“网的小说,生成epub、pdf等电子书已经不是问题。不需要麻烦的编辑了。下载时请注意察看目录中有没有章节是图片,那个比较麻烦的。从已经抓取的书箱看效果还是比较好的。不过页面中经常有广告,只能用SIGIL来删除了,那也是个超级好的东东。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值