最近老婆大人要看小说,要我从网上帮她下载。
有事问度娘, baidu 《帝凰:邪帝的顽妃》 原来是 红袖添香 的文章。
打开网页,开始观察
1. 没有下载功能。
2.有部分章节是VIP的,无法看到。
好吧,开始盗贴吧,不过只能拿到 公共 的部分。
打开 目录 的网页(http://novel.hongxiu.com/a/475740/list.shtml), 用firebug看每个章节的所在的属性。
好的,我得到了,目录的 csspath (html body div.wrapper_list div#htmlList.insert_list dl dd ul li )
这里要说一下,BeautifulSoup 的4.0支持 xpath csspath 等多个查询方式。
用下面的代码,就可以遍历 文章的所有目录:
tag_li = soup.select( "html body div.wrapper_list div#htmlList dl dd ul li")
tag_li 就是 所有目录的 list
开始找 章节的路径、章节名、是不是VIP
for li in tag_li:
tag_a = li.strong.a.extract() no_txt = li.strong.text no = re.sub( u'\n+',u'', no_txt )
href = tag_a['href']
title = tag_a.string
isvip = 'VIP' if li.find('font', class_='isvip') else 'PUB'
tag_a = li.strong.a.extract()
这行,是把 <a></a> 从这样的html <li><strong><a></a></strong></li> 中提取出来。
原来的html 变成了 <li><strong></strong></li>
no_txt = li.strong.text
no = re.sub( u'\n+',u'', no_txt )
章节序号
href = tag_a['href']
title = tag_a.string
章节的url, 和 章节名
isvip = 'VIP' if li.find('font', class_='isvip') else 'PUB'
是不是vip章节,如果是,就不抓取了,跳过。