爬虫之小说爬取

时间:2021-11-28 07:49:08

以笔趣阁网站为例,爬取一念永恒这本小说

链接如下:http://www.biqukan.com/1_1094

爬虫之小说爬取

 具体代码如下:

 1 from bs4 import BeautifulSoup
 2 from urllib import request
 3 import requests
 4 import re
 5 import sys
 6 def Down_this_chapter(chapter_url,name):#单章下载
 7     r = requests.get(chapter_url,timeout = 30)#防止爬取时间过长造成爬虫假死
 8     r.raise_for_status()#自动判断返回的状态码是不是200
 9     r.encoding = r.apparent_encoding#使用备用编码代替现在的编码,一般是'utf-8'
10     demo = r.text#获得页面文本信息
11     soup=BeautifulSoup(demo,'lxml')#解析页面
12     text=soup.find_all(id='content',class_='showtxt')#寻找特定标签下的内容
13     soup_text = BeautifulSoup(str(text), 'lxml')#重写解析页面
14     demo1=soup_text.div.text.replace('\xa0','')#去除无用内容
15     print(name)
16     with open('D:一念永恒.txt','a',encoding='utf-8') as f:#将找到的内容写到D盘下的文件中
17         f.write('\t\t\t\t\t\t\t\t\t\t'+name+'\n')#处理章节名格式问题
18         f.write(''  +demo1)
19         f.write('\n\n')
20         f.close()
21         
22 def Novel_url(novel_url):#章节链接下载
23     r = requests.get(novel_url,timeout = 30)
24     r.raise_for_status()
25     r.encoding = r.apparent_encoding
26     demo = r.text
27     soup = BeautifulSoup(demo,'lxml')
28     text = soup.find_all('div',class_ = 'listmain')
29     soup_url = BeautifulSoup(str(text),'lxml')
30     flag=False
31     numbers=(len(soup_url.dl.contents) - 1)#为查看下载进度服务
32     index=1
33     for child in soup_url.dl.children:#遍历章节
34         if child!='\n':#过滤
35            if child.string ==u"《一念永恒》正文卷":#爬取正文卷
36                flag=True#标识符
37            if flag==True and child.a!=None:#爬取章节链接的条件
38                 download_url = "http://www.biqukan.com"+child.a.get('href')#获得爬取链接
39                 name = child.string
40                 Down_this_chapter(download_url,name)
41                 sys.stdout.write("已下载:%.3f%%" % float(index/numbers) + '\r')
42                 sys.stdout.flush()
43                 index += 1
44                
45 def main ():
46     novel_url='http://www.biqukan.com/1_1094/'#获得笔趣阁要爬取的小说的地址
47     Novel_url(novel_url)#爬取章节的链接
48     print("爬取小说成功,请到D盘下查看")
49 main()
50 
51 """下面是部分爬取结果:
52 外传1 柯父。
53 已下载:0.000%
54 外传2 楚玉嫣。
55 已下载:0.001%
56 外传3 鹦鹉与皮冻。
57 已下载:0.001%
58 第一章 他叫白小纯
59 已下载:0.002%
60 第二章 火灶房
61 已下载:0.002%
62 第三章 六句真言
63 已下载:0.002%
64 第四章 炼灵
65 已下载:0.003%
66 第五章 万一丢了小命咋办
67 已下载:0.003%
68 第六章 灵气上头
69 已下载:0.003%
70 第七章 龟纹认主
71 已下载:0.004%
72 第八章 我和你拼了!
73 已下载:0.004%
74 第九章 延年益寿丹
75 已下载:0.005%
76 第十章 师兄别走
77 已下载:0.005%
78 第十一章 侯小妹
79 已下载:0.005%
80 
81 """

总结:一定要对将要爬取的网页的代码进行彻底的分析,不然可能得不到想要的效果

若有不足错误的地方,欢迎兄弟们拍砖指正,大家一起学习,一起进步!!!!