Python beautifulsoup爬取小说
提前准备好需要的库文件,命令行输入以下命令
pip install requests
pip install bs4
pip install lxml
首先爬取一章的内容
首先确定爬取小说的目标 https://www.huixsw.com/96035/tc_765624.html
首先使用requests来获取网页的全部内容
from bs4 import BeautifulSoup
import requests
firurl='https://www.huixsw.com/96035/tc_765624.html'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
r=requests.get(firurl,headers=headers)
print(r.text)
我们得到了很多包括小说内容的全部信息,接下来尝试用beautifulsoup对获取的内容进行分析。
......
“夫人,先生回来了,叫你下楼。”佣人敲房门,进来传话。
曲嫣坐在梳妆台前,懒懒地挥了挥手:“让他等着。”
佣人吃了一惊:“让先生等?这恐怕不好吧……”
要知道,以前只要听说先生回来,夫人就会立刻飞奔下楼,乖乖巧巧到大门口去迎接。
今天怎么回事?
曲嫣漫不经心地梳着长发:“行了,你下去吧,让他等等又不会死人。”
佣人一脸愕然,这话可不像是温婉贤淑的夫人平时会说的。
佣人不敢多嘴,退出卧室。
曲嫣一边照镜子,一边摇头嫌弃:“这穿的是什么衣服?而且妆也太显老了。”
曲嫣索性把身上保守的长到脚踝的黑色长裙脱掉,去浴室卸妆,顺便冲澡。
热水冲淋在肌肤上,很舒服。m.bg。
曲嫣仰起头,优美的下颌线映照在水雾模糊的玻璃门上。
这具身体的原主其实很美,只不过太拘束了,为了讨好老公,努力变得听话贤淑。
她却不知道,男人天生有劣根性,你越听话,他就越觉得你无趣。
这不,联姻结婚整整一年,这个男人连碰都没碰过原主一次。
原主患上抑郁症,她老公却毫不知情。
她服药过量,昨夜死在了浴缸里,也没有任何人知晓。
可怜的姑娘呐……
曲嫣叹息。
幸好,因为原主的执念和怨念过于强烈,被快穿主神抓取到,所以才有她穿过来,帮原主圆梦。
原主的心愿很简单,她想要丈夫傅廷川后悔,更想要得到真正的爱情,被人呵护被人宠爱。
曲嫣慢条斯理地洗完澡,裹上白色浴袍,在浴室里吹头发。
原主的发质很好,没有染烫,乌黑如瀑,只是平时总盘成老气的发髻,平白降低了颜值。
白皙的瓜子脸,虽不美艳,却精致小巧,樱唇琼鼻,一双水汪汪的杏眼稍稍画一抹微翘的眼线,就能溢出三分旖旎。
曲嫣一点也不着急她“老公”在楼下等她,慢悠悠画了一个粉嫩的裸妆,任由乌黑长发披散在肩上,才踩着悠闲的步伐下楼。
一楼,欧式装潢的客厅。
一个西装笔挺的男人正站在落地窗前,指间夹着烟,抖烟灰的动作有几分不耐烦。
曲嫣慢腾腾地走到他身后,随意地道:“你回来了。”
傅廷川转过身来,上下扫了她一眼,皱起眉头:“你穿这样就下楼?”
“我这样怎么了?”曲嫣低头看看自己,白色浴袍裹得很紧,没有露出什么不该露的。
“身为傅太太,你连最基本的礼数修养都不懂?穿着浴袍到处走?”傅廷川微怒地斥责。
“在自己家里,还不能穿浴袍了?”曲嫣只觉得他有病。
他在外面爱上的那个小三,可不是什么懂礼数有修养的女人。
“算了,我和你没什么可说的。”傅廷川懒得和她再废话,指了指茶几上的文件,“离婚协议书,你签了吧。”
曲嫣勾唇,微微一笑。
啧。
这么急啊。
他在夜色会所里认识那个女人才多久?两个月?就肯为了她离婚。
“你要是不肯签,我们就走法律程序。”傅廷川见她迟迟不回应,认为她肯定要哀求挽回了,当机立断地道,“傅家和曲家两边,我会出面,就说我们结婚这么久一直怀不上孩子。”
当初联姻,一方面是为了商业合作,另一方面自然是为了子嗣继承人。
既然曲嫣怀不上孩子,离婚也说得过去。
“我怀不上孩子?我一个人无性繁殖吗?”曲嫣听着都要气笑了。
男人一旦无耻起来,真是令人大开眼界。
_soso
from bs4 import BeautifulSoup
import requests
firurl='https://www.huixsw.com/96035/tc_765624.html'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
r=requests.get(firurl,headers=headers)
mysoup=BeautifulSoup(r.text,'lxml')
mycontent=mysoup.find(id='chaptercontent',class_='content')
print(mycontent.text.replace(' ',''))
成功得到第一章的所有内容
“夫人,先生回来了,叫你下楼。”佣人敲房门,进来传话。曲嫣坐在梳妆台前,懒懒地挥了挥手:“让他等着。”佣人吃了一惊:“让先生等?这恐怕不好吧……”要知道,以前只要听说先生回来,夫人就会立刻飞奔下楼,乖乖巧巧到大门口去迎接。今天怎么回事?曲嫣漫不经心地梳着长发:“行了,你下去吧,让他等等又不会死人。”佣人一脸愕然,这话可不像是温婉贤淑的夫人平时会说的。佣人不敢多嘴,退出卧室。曲嫣一边照镜子,一边摇头嫌弃:“这穿的是什么衣服?而且妆也太显老了。”曲嫣索性把身上保守的长到脚踝的黑色长裙脱掉,去浴室卸妆,顺便冲澡。热水冲淋在肌肤上,很舒服。m.bg。曲嫣仰起头,优美的下颌线映照在水雾模糊的玻璃门上。这具身体的原主其实很美,只不过太拘束了,为了讨好老公,努力变得听话贤淑。她却不知道,男人天生有劣根性,你越听话,他就越觉得你无趣。这不,联姻结婚整整一年,这个男人连碰都没碰过原主一次。原主患上抑郁症,她老公却毫不知情。她服药过量,昨夜死在了浴缸里,也没有任何人知晓。可怜的姑娘呐……曲嫣叹息。幸好,因为原主的执念和怨念过于强烈,被快穿主神抓取到,所以才有她穿过来,帮原主圆梦。原主的心愿很简单,她想要丈夫傅廷川后悔,更想要得到真正的爱情,被人呵护被人宠爱。曲嫣慢条斯理地洗完澡,裹上白色浴袍,在浴室里吹头发。原主的发质很好,没有染烫,乌黑如瀑,只是平时总盘成老气的发髻,平白降低了颜值。白皙的瓜子脸,虽不美艳,却精致小巧,樱唇琼鼻,一双水汪汪的杏眼稍稍画一抹微翘的眼线,就能溢出三分旖旎。曲嫣一点也不着急她“老公”在楼下等她,慢悠悠画了一个粉嫩的裸妆,任由乌黑长发披散在肩上,才踩着悠闲的步伐下楼。一楼,欧式装潢的客厅。一个西装笔挺的男人正站在落地窗前,指间夹着烟,抖烟灰的动作有几分不耐烦。曲嫣慢腾腾地走到他身后,随意地道:“你回来了。”傅廷川转过身来,上下扫了她一眼,皱起眉头:“你穿这样就下楼?”“我这样怎么了?”曲嫣低头看看自己,白色浴袍裹得很紧,没有露出什么不该露的。“身为傅太太,你连最基本的礼数修养都不懂?穿着浴袍到处走?”傅廷川微怒地斥责。“在自己家里,还不能穿浴袍了?”曲嫣只觉得他有病。他在外面爱上的那个小三,可不是什么懂礼数有修养的女人。“算了,我和你没什么可说的。”傅廷川懒得和她再废话,指了指茶几上的文件,“离婚协议书,你签了吧。”曲嫣勾唇,微微一笑。啧。这么急啊。他在夜色会所里认识那个女人才多久?两个月?就肯为了她离婚。“你要是不肯签,我们就走法律程序。”傅廷川见她迟迟不回应,认为她肯定要哀求挽回了,当机立断地道,“傅家和曲家两边,我会出面,就说我们结婚这么久一直怀不上孩子。”当初联姻,一方面是为了商业合作,另一方面自然是为了子嗣继承人。既然曲嫣怀不上孩子,离婚也说得过去。“我怀不上孩子?我一个人无性繁殖吗?”曲嫣听着都要气笑了。男人一旦无耻起来,真是令人大开眼界。_soso
成功获取第一章的内容之后,接下来打算获取后面的章节内容,因为有下一章的标签,可以直接获取对应的链接,之后替换掉链接即可获得后面的章节内容,首先将刚才写的定义为函数,通过函数的调用获取更加方便。
from bs4 import BeautifulSoup
import requests
host='https://www.huixsw.com'
firurl='https://www.huixsw.com/96035/tc_765624.html'
newurl='https://www.huixsw.com/96035/tc_765624.html'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
def mygetcontent(newurl):
r=requests.get(newurl,headers=headers)
mysoup=BeautifulSoup(r.text,'lxml')
mycontent=mysoup.find(id='chaptercontent',class_='content')
nextcontent=mysoup.find(class_='last')
mycontent.text.replace(' ','')
newurl=host+nextcontent.a.get('href')
print(newurl)
mygetcontent(newurl)
这样就获得了下一章的链接,通过不断循环即可获得全部章节内容
from bs4 import BeautifulSoup
import requests
import time
host='https://www.huixsw.com'
firurl='https://www.huixsw.com/96035/tc_765624.html'
newurl='https://www.huixsw.com/96035/tc_765624.html'
url=newurl
session=requests.Session()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
def mygetcontent(newurl):
r=session.get(newurl,headers=headers)
mysoup=BeautifulSoup(r.text,'lxml')
mycontent=mysoup.find(id='chaptercontent',class_='content')
nextcontent=mysoup.find(class_='last')
result=mycontent.text.replace(' ','')
newurl=host+nextcontent.a.get('href')
print(result)
return newurl
for i in range(1161):
url=mygetcontent(newurl=url)
print('第'+str(i+1)+'章下载完毕')
time.sleep(0.2)
接下来将获取的小说内容存入到文件当中即可,同时为了完善,需要把小说章节的标题也加入到小说文件里面。
from bs4 import BeautifulSoup
import requests
import time
host='https://www.huixsw.com'
firurl='https://www.huixsw.com/96035/tc_765624.html'
newurl='https://www.huixsw.com/96035/tc_765624.html'
url=newurl
session=requests.Session()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'}
def mygetcontent(newurl):
r=session.get(newurl,headers=headers)
mysoup=BeautifulSoup(r.text,'lxml')
mycontent=mysoup.find(id='chaptercontent',class_='content')
nextcontent=mysoup.find(class_='last')
title=mysoup.find(class_='title')
title=title.find('a')
result=mycontent.text.replace(' ','')
newurl=host+nextcontent.a.get('href')
print(str(title.text))
strtotxt(str(title.text),result)
return newurl
def strtotxt(strtitle,strtxt):
with open("D:/小说.txt",'a+',encoding='utf-8') as f:
f.write('\n')
f.write(strtitle)
f.write(strtxt)
for i in range(1161):
url=mygetcontent(newurl=url)
print('第'+str(i+1)+'章下载完毕')
time.sleep(0.2)
成功下载完正本小说。