100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python 小说爬虫_小说爬虫python

python 小说爬虫_小说爬虫python

时间:2020-03-17 00:24:33

相关推荐

python 小说爬虫_小说爬虫python

在线观看多费劲呀,不如爬下来看

小说网站地址:/

分析:

第一种方法:

首先随便打开一个小说章节详情页,比如莽荒记

发现这个详情页,居然包含了所有章节的url。

故第一种实现思路就是从这个页面找到所有章节的url,存为一个列表,然后批量去匹配小说内容下载小说。

第二种方法:

在第一个章节点开任意 一章小说,对页面进行分析

发现这里有下一章的链接,

故方法二就是在当前页面找到下一章的链接,然后循环执行批量下载小说,只要拿到小说章节的url一切都好说。

第三种方法:

通过观察连续每一章的url:

小说地址:/book/44/44683/

章节规律:页面翻页规律

章节1:/book/51/51030/16813025.html

章节2:/book/51/51030/16813026.html

章节3:/book/51/51030/16813027.html

/book/44/44683/15379612.html

......

.......

最后一章的url:/book/51/51030/18021855.html

,,这网站居然没更新完本。。这就尴尬了,

不过我们还是能

发现规律

连续章节url

=/book/51/51030/168130+章节数.html

所以第三种方法只是简单的拼接url就ok 了。

总结经验:爬虫的实现方法有多种,主要还是看你实现这种爬虫的实现思路,通过几种方法来比较哪一种方法比较简单实用。

第二种方法的代码实现:

'''

小说地址:/book/51/51030

小说章节第一章:/book/51/51030/16813025.html

by:北冥

'''

importrequests#网络请求模块

importre#正则表达式模块

frombs4importBeautifulSoup#解析网页模块

importsys#防出错模块

defgetContent(content_url,i):

try:

i=i+1#循环调用直到下完为止,如果找不到下一章的url程序会报错。

header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

res = requests.get(content_url,headers= header,timeout=10)#开始请求

res.encoding ='gbk'#设置编码

soup = BeautifulSoup(res.text,'html.parser')#解析页面html

title = soup.select('.jieqi_title')[0].text.lstrip('章 节目录 ')#开始搜索章节

print(title)#终端打印章节

content = soup.select('#content')[0].text.lstrip('style5();').rstrip('style6();')#小说内容

both = title + content#章节+内容

next_url = soup.select('.next')[0]['href']#在当前页面搜索下一章

print(both,file= f)#写入文件

print(i)#终端打印章节

returngetContent(next_url,i)#反复调用函数

except:

print('下载完成啦', sys.exc_info()[0], sys.exc_info()[1])

#出错返回

#以下是调用过程

f =open("莽荒记.txt",'w+',encoding='utf-8')#保存在当前目录

i=0

getContent('/book/51/51030/16813025.html',i)#第一章的url传进去

f.close()

print('ok!')

以下是代码整体图,好看点

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