用request和BeautifulSoup抓取盗贴的小说(二)

最近老婆大人要看小说,要我从网上帮她下载。

有事问度娘, 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章节,如果是,就不抓取了,跳过。

你可能感兴趣的:(用request和BeautifulSoup抓取盗贴的小说(二))