Python beautifulsoup爬取小说

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' #第一章的url
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对获取的内容进行分析。

......
<div class="content" id="chaptercontent">
<script type="text/javascript">app2();</script>
   “夫人,先生回来了,叫你下楼。”佣人敲房门,进来传话。<br /><br />  <br /><br />  曲嫣坐在梳妆台前,懒懒地挥了挥手:“让他等着。”<br /><br />  <br /><br />  佣人吃了一惊:“让先生等?这恐怕不好吧……”<br /><br />  <br /><br />  要知道,以前只要听说先生回来,夫人就会立刻飞奔下楼,乖乖巧巧到大门口去迎接。<br /><br />  <br /><br />  今天怎么回事?<br /><br />  <br /><br />  曲嫣漫不经心地梳着长发:“行了,你下去吧,让他等等又不会死人。”<br /><br />  <br /><br />  佣人一脸愕然,这话可不像是温婉贤淑的夫人平时会说的。<br /><br />  <br /><br />  佣人不敢多嘴,退出卧室。<br /><br />  <br /><br />  曲嫣一边照镜子,一边摇头嫌弃:“这穿的是什么衣服?而且妆也太显老了。”<br /><br />  <br /><br />  曲嫣索性把身上保守的长到脚踝的黑色长裙脱掉,去浴室卸妆,顺便冲澡。<br /><br />  <br /><br />  热水冲淋在肌肤上,很舒服。m.bg。<br /><br />  <br /><br />  曲嫣仰起头,优美的下颌线映照在水雾模糊的玻璃门上。<br /><br />  <br /><br />  这具身体的原主其实很美,只不过太拘束了,为了讨好老公,努力变得听话贤淑。<br /><br />  <br /><br />  她却不知道,男人天生有劣根性,你越听话,他就越觉得你无趣。<br /><br />  <br /><br />  这不,联姻结婚整整一年,这个男人连碰都没碰过原主一次。<br /><br />  <br /><br />  原主患上抑郁症,她老公却毫不知情。<br /><br />  <br /><br />  她服药过量,昨夜死在了浴缸里,也没有任何人知晓。<br /><br />  <br /><br />  可怜的姑娘呐……<br /><br />  <br /><br />  曲嫣叹息。<br /><br />  <br /><br />  幸好,因为原主的执念和怨念过于强烈,被快穿主神抓取到,所以才有她穿过来,帮原主圆梦。<br /><br />  <br /><br />  原主的心愿很简单,她想要丈夫傅廷川后悔,更想要得到真正的爱情,被人呵护被人宠爱。<br /><br />  <br /><br />  曲嫣慢条斯理地洗完澡,裹上白色浴袍,在浴室里吹头发。<br /><br />  <br /><br />  原主的发质很好,没有染烫,乌黑如瀑,只是平时总盘成老气的发髻,平白降低了颜值。<br /><br />  <br /><br />  白皙的瓜子脸,虽不美艳,却精致小巧,樱唇琼鼻,一双水汪汪的杏眼稍稍画一抹微翘的眼线,就能溢出三分旖旎。<br /><br />  <br /><br />  曲嫣一点也不着急她“老公”在楼下等她,慢悠悠画了一个粉嫩的裸妆,任由乌黑长发披散在肩上,才踩着悠闲的步伐下楼。<br /><br />  <br /><br />  一楼,欧式装潢的客厅。<br /><br />  <br /><br />  一个西装笔挺的男人正站在落地窗前,指间夹着烟,抖烟灰的动作有几分不耐烦。<br /><br />  <br /><br />  曲嫣慢腾腾地走到他身后,随意地道:“你回来了。”<br /><br />  <br /><br />  傅廷川转过身来,上下扫了她一眼,皱起眉头:“你穿这样就下楼?”<br /><br />  <br /><br />  “我这样怎么了?”曲嫣低头看看自己,白色浴袍裹得很紧,没有露出什么不该露的。<br /><br />  <br /><br />  “身为傅太太,你连最基本的礼数修养都不懂?穿着浴袍到处走?”傅廷川微怒地斥责。<br /><br />  <br /><br />  “在自己家里,还不能穿浴袍了?”曲嫣只觉得他有病。<br /><br />  <br /><br />  他在外面爱上的那个小三,可不是什么懂礼数有修养的女人。<br /><br />  <br /><br />  “算了,我和你没什么可说的。”傅廷川懒得和她再废话,指了指茶几上的文件,“离婚协议书,你签了吧。”<br /><br />  <br /><br />  曲嫣勾唇,微微一笑。<br /><br />  <br /><br />  啧。<br /><br />  <br /><br />  这么急啊。<br /><br />  <br /><br />  他在夜色会所里认识那个女人才多久?两个月?就肯为了她离婚。<br /><br />  <br /><br />  “你要是不肯签,我们就走法律程序。”傅廷川见她迟迟不回应,认为她肯定要哀求挽回了,当机立断地道,“傅家和曲家两边,我会出面,就说我们结婚这么久一直怀不上孩子。”<br /><br />  <br /><br />  当初联姻,一方面是为了商业合作,另一方面自然是为了子嗣继承人。<br /><br />  <br /><br />  既然曲嫣怀不上孩子,离婚也说得过去。<br /><br />  <br /><br />  “我怀不上孩子?我一个人无性繁殖吗?”曲嫣听着都要气笑了。<br /><br />  <br /><br />  男人一旦无耻起来,真是令人大开眼界。<br /><br />  _soso </div>
</article>
<div class="operate">
<ul>
......
from bs4 import BeautifulSoup
import requests
firurl='https://www.huixsw.com/96035/tc_765624.html' #第一章的url
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) #打印结果
mysoup=BeautifulSoup(r.text,'lxml')
mycontent=mysoup.find(id='chaptercontent',class_='content')
print(mycontent.text.replace(' ',''))#通过bs4解析的结果将空格去掉

成功得到第一章的所有内容

 “夫人,先生回来了,叫你下楼。”佣人敲房门,进来传话。曲嫣坐在梳妆台前,懒懒地挥了挥手:“让他等着。”佣人吃了一惊:“让先生等?这恐怕不好吧……”要知道,以前只要听说先生回来,夫人就会立刻飞奔下楼,乖乖巧巧到大门口去迎接。今天怎么回事?曲嫣漫不经心地梳着长发:“行了,你下去吧,让他等等又不会死人。”佣人一脸愕然,这话可不像是温婉贤淑的夫人平时会说的。佣人不敢多嘴,退出卧室。曲嫣一边照镜子,一边摇头嫌弃:“这穿的是什么衣服?而且妆也太显老了。”曲嫣索性把身上保守的长到脚踝的黑色长裙脱掉,去浴室卸妆,顺便冲澡。热水冲淋在肌肤上,很舒服。m.bg。曲嫣仰起头,优美的下颌线映照在水雾模糊的玻璃门上。这具身体的原主其实很美,只不过太拘束了,为了讨好老公,努力变得听话贤淑。她却不知道,男人天生有劣根性,你越听话,他就越觉得你无趣。这不,联姻结婚整整一年,这个男人连碰都没碰过原主一次。原主患上抑郁症,她老公却毫不知情。她服药过量,昨夜死在了浴缸里,也没有任何人知晓。可怜的姑娘呐……曲嫣叹息。幸好,因为原主的执念和怨念过于强烈,被快穿主神抓取到,所以才有她穿过来,帮原主圆梦。原主的心愿很简单,她想要丈夫傅廷川后悔,更想要得到真正的爱情,被人呵护被人宠爱。曲嫣慢条斯理地洗完澡,裹上白色浴袍,在浴室里吹头发。原主的发质很好,没有染烫,乌黑如瀑,只是平时总盘成老气的发髻,平白降低了颜值。白皙的瓜子脸,虽不美艳,却精致小巧,樱唇琼鼻,一双水汪汪的杏眼稍稍画一抹微翘的眼线,就能溢出三分旖旎。曲嫣一点也不着急她“老公”在楼下等她,慢悠悠画了一个粉嫩的裸妆,任由乌黑长发披散在肩上,才踩着悠闲的步伐下楼。一楼,欧式装潢的客厅。一个西装笔挺的男人正站在落地窗前,指间夹着烟,抖烟灰的动作有几分不耐烦。曲嫣慢腾腾地走到他身后,随意地道:“你回来了。”傅廷川转过身来,上下扫了她一眼,皱起眉头:“你穿这样就下楼?”“我这样怎么了?”曲嫣低头看看自己,白色浴袍裹得很紧,没有露出什么不该露的。“身为傅太太,你连最基本的礼数修养都不懂?穿着浴袍到处走?”傅廷川微怒地斥责。“在自己家里,还不能穿浴袍了?”曲嫣只觉得他有病。他在外面爱上的那个小三,可不是什么懂礼数有修养的女人。“算了,我和你没什么可说的。”傅廷川懒得和她再废话,指了指茶几上的文件,“离婚协议书,你签了吧。”曲嫣勾唇,微微一笑。啧。这么急啊。他在夜色会所里认识那个女人才多久?两个月?就肯为了她离婚。“你要是不肯签,我们就走法律程序。”傅廷川见她迟迟不回应,认为她肯定要哀求挽回了,当机立断地道,“傅家和曲家两边,我会出面,就说我们结婚这么久一直怀不上孩子。”当初联姻,一方面是为了商业合作,另一方面自然是为了子嗣继承人。既然曲嫣怀不上孩子,离婚也说得过去。“我怀不上孩子?我一个人无性繁殖吗?”曲嫣听着都要气笑了。男人一旦无耻起来,真是令人大开眼界。_soso 

成功获取第一章的内容之后,接下来打算获取后面的章节内容,因为有下一章的标签,可以直接获取对应的链接,之后替换掉链接即可获得后面的章节内容,首先将刚才写的定义为函数,通过函数的调用获取更加方便。

from bs4 import BeautifulSoup
import requests
host='https://www.huixsw.com'
firurl='https://www.huixsw.com/96035/tc_765624.html' #第一章的url
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)
    #print(r.text) #打印结果
    mysoup=BeautifulSoup(r.text,'lxml')
    mycontent=mysoup.find(id='chaptercontent',class_='content')
    nextcontent=mysoup.find(class_='last')
    mycontent.text.replace(' ','') #通过bs4解析的结果将空格去掉
    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' #第一章的url
newurl='https://www.huixsw.com/96035/tc_765624.html' #新的url
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)
    #print(r.text) #打印结果
    mysoup=BeautifulSoup(r.text,'lxml')
    mycontent=mysoup.find(id='chaptercontent',class_='content')
    nextcontent=mysoup.find(class_='last')
    result=mycontent.text.replace(' ','') #通过bs4解析的结果将空格去掉
    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' #第一章的url
newurl='https://www.huixsw.com/96035/tc_765624.html' #新的url
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)
    #print(r.text) #打印结果
    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') #首先获取相应的class内容,过滤掉a标签
    result=mycontent.text.replace(' ','') #通过bs4解析的结果将空格去掉
    newurl=host+nextcontent.a.get('href') #下一章的链接
    #print(result)
    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)

成功下载完正本小说。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值