1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用正则表达式进行小说爬虫

使用正则表达式进行小说爬虫

时间:2022-01-05 07:28:30

相关推荐

使用正则表达式进行小说爬虫

此链接是正则表达式的知识点,知识点与实例结合起来有助于理解哦!—— Python基础——正则表达式

本次爬虫,我是对努努书坊 — 小说在线阅读中的《后宫:甄嬛传1》进行爬取。

爬虫思路如下:

1、进入小说目录的界面(此时链接为 url = /book/3813/),点击右键,查看网页源代码,找到含有目录的地方,通过下面代码可以将" width=25%(如果没有则为空字符串)、href 以及 目录"以列表的形式爬取下来:

m1=pile(r'<td( width="25%")?><a href="(.+\.html)">(.+)</a></td>')

小说部分目录:爬取结果如下:

2、点击目录前的链接 href,便能跳到相应章节的网页源代码(此时链接为 /book/3813/38501.html),观察链接的规律可发现:章节内容的链接等于 url(小说目录界面的链接) + href

观察可发现作者简介的内容在一对尖括号 <p></p> 中,通过下面代码可将其提取出来

m2=pile(r'<p>(.+)</p>',re.S)

作者简介的部分网页源代码:由上图可知,<br />也是多余的,可通过以下代码将其去掉

m3=pile(r"<br />")nrl=m3.sub("",nr)

以下是爬取《后宫:甄嬛传1》的完整代码:

#小说爬虫 作者:成纤纤import requestsimport reurl="/book/3813/"txt=requests.get(url).content.decode("gbk")m1=pile(r'<td( width="25%")?><a href="(.+\.html)">(.+)</a></td>')m2=pile(r'<p>(.+)</p>',re.S)m3=pile(r"<br />")raw=m1.findall(txt) #将所有符合" width=25%(如果没有则为空字符串)、href 以及 目录"的字符串爬取下来ilist=[(i[2],url+i[1]) for i in raw]#将目录以及小说某章节的完整链接进行遍历print("小说目录已下载完毕!")with open("后宫:甄嬛传1.txt","a") as f: #文件读写for i in ilist:print("开始下载--->",i[0]) #i[0] 为开始下载章节对应的目录t1=requests.get(i[1]).content.decode("gbk")nr=m2.findall(t1)[0] #读取尖括号<p></p>中的内容nrl=m3.sub("",nr)#去除尖括号<p></p>中的<br />f.write(i[0].center(200)) #以下代码是为了提高爬取下来小说的可读性,使标题与内容之间有间距f.write('\n\n')f.write(nrl)f.write('\n\n')print("下载完毕!")

建议大家可以照着敲一敲,如果有不懂的地方将其结果打印出来(print) ,对代码进行调试。或者可以留言,我看到之后会立马进行回复的^_^

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。