失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何用python爬虫爬取网络小说?

如何用python爬虫爬取网络小说?

时间:2021-04-03 02:50:48

相关推荐

如何用python爬虫爬取网络小说?

这里是17K小说网上,随便找了一本小说,名字是《千万大奖》。

里面主要是三个函数:

1、get_download_url() 用于获取该小说的所有章节的URL。

分析了该小说的目录页/list/2819620.html的HTML源码,发现其目录是包含在Volume里的A标签合集。所以就提取出了URLS列表。

2、get_contents(target) 用于获取小说指定章节的正文内容

分析了小说中第一章节的页面/chapter/2819620/34988369.html,发现其正文内容包含在P标签中,正文标题包含在H1标签中,经过对换行等处理,得到正文内容。传入参数是上一函数得到的URL。

3、writer(name, path, text) 用于将得到的正文内容和章节标题写入到千万大奖.txt

理论上,该简单爬虫可以爬取该网站的任意小说。

from bs4 import BeautifulSoupimport requests, sys'''遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!'''target='/list/2819620.html'server=''urls=[]def get_download_url():req = requests.get(url = target)html = req.textdiv_bf = BeautifulSoup(html,'lxml')div = div_bf.find_all('dl', class_ = 'Volume')a_bf = BeautifulSoup(str(div[0]),'lxml')a = a_bf.find_all('a')for each in a[1:]:urls.append(server + each.get('href'))def get_contents(target):req = requests.get(url = target)html = req.textbf = BeautifulSoup(html,'lxml')title=bf.find_all('div', class_ = 'readAreaBox content')title_bf = BeautifulSoup(str(title[0]),'lxml')title = title_bf.find_all('h1')title=str(title[0]).replace('<h1>','')title=str(title).replace('</h1>','')title=str(title).replace(' ','')title=str(title).replace('\n','')texts = bf.find_all('div', class_ = 'p')texts=str(texts).replace('<br/>','\n')texts=texts[:texts.index('本书首发来自17K小说网,第一时间看正版内容!')]texts=str(texts).replace('','')return title,str(texts[len('[<div class="p">'):])def writer(name, path, text):write_flag = Truewith open(path, 'a', encoding='utf-8') as f:f.write(name + '\n')f.writelines(text)f.write('\n')#title,content=get_contents(target)#print(title,content)#writer(title,title+".txt",content)get_download_url()#print(urls)i=1for url in urls:title,content=get_contents(url)writer(title,"千万大奖.txt",content)print(str(int(i/len(urls)*100))+"%")i+=1

如果觉得《如何用python爬虫爬取网络小说?》对你有帮助,请点赞、收藏,并留下你的观点哦!

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