听央视节目介绍了唐朝李峤的吟物诗,很感兴趣,网上搜了一下,没有找到电子书。只有全唐诗中有几卷中有李峤的诗,或者有日本收藏的李峤的诗。索性诗词名句网上有李峤的诗词全集、诗集(200首全),可以抓下来自动生成电子书。于是写了个recipe。
网上的目录页共有五页,所以用了一个循环,从1到5,注意到第一页为40.html,以后为40_2.html到40_5.html,用range(1,6,1),6是不包括在内的。1时单独处理,不用40_1。目录页中链接和标题均包含在<div class='shicilist>中,再用find('a')找出所有的<a>,注意到其中还有作者的链接,朝代的链接,分类的链接,对诗本身没有作用,而诗的链接中包含list,所有使用了一个过滤。由此可以生成每首诗的标题与页面。注意到每个页面中有用的只是诗文内容与赏析,所以使用了keep_only_tags,保留了zhuti和shangxi两个区块(div),并且使用remove_tags去除了作者介绍、版权提示待内容。形成比较精练的页面内容。所有代码如下:
# coding=gbk
from calibre.web.feeds.recipes import BasicNewsRecipe
class lijiao(BasicNewsRecipe):
title = u"李峤的诗词200首"
description = u"李峤(644~713) ,唐代诗人。字巨山。赵州赞皇(今属河北)人。少有才名。20岁时,擢进士第。举制策甲科。累官监察御史。邕、严二州僚族起义,他受命监军进讨,亲入僚洞劝降,罢兵而返。迁给事中。武后、中宗朝,屡居相位,封赵国公。睿宗时,左迁怀州刺史。玄宗即位,贬滁州别驾,改庐州别驾。李峤的生卒年,新旧《唐书》均无记载,根据《通鉴》推断,生年应在贞观十八年(644),卒年在玄宗开元元年(713)。李峤对唐代律诗和歌行的发展有一定的作用与影响。他前与王勃、杨炯相接,又和杜审言、崔融、苏味道并称“文章四友”。"
recursions = 0
max_articles_per_feed = 280
oldest_article = 3280
remove_javascript = True
cover_url = "http://www.shicimingju.com/Public/images/zuozhe/349.jpg"
url_prefix = "http://www.shicimingju.com"
no_stylesheets = True
keep_only_tags =[dict(name='div', attrs={'class':'zhuti yuanjiao'}),
dict(name='div', attrs={'class':'shangxi yuanjiao'})
] #要保留的标签
remove_tags = [dict(name='div', attrs={'id':'suijisc'}),
dict(name='div', attrs={'class':'listscmk'}),
dict(name='div', attrs={'class':'zuozhe'}),
dict(name='div', attrs={'style':'color:#999'})
]
def get_title(self,link):
return link.contents[0].strip()
def parse_index(self):
articles = []
for i in range(1,6,1):
if i == 1:
suffix = '/chaxun/zuozhe/40.html'
else:
suffix = '/chaxun/zuozhe/40_' + str(i) + '.html'
u = self.url_prefix + suffix
soup = self.index_to_soup(u)
aa = soup.find('div',attrs = {'class': "shicilist"}).findAll('a')
for link in aa:
if 'list' not in link['href']:
continue
title = self.get_title(link)
title = title.encode("utf-8") #处理中文,转换代码
url = self.url_prefix + link['href']
a = {'title':title,'url':url}
articles.append(a)
ans = [(u'李峤的诗词200首',articles)]
return ans