本文图片以及文本仅供学习、交流使用,不做商业用途,如有问题请及时联系我们以作处理。
前言
小说,宅男必备,也是当今社会人们打发时间的一种方式。今天教大家爬取新笔趣阁小说网,获取网站小说数据,保存为对应的txt文件。
分析网页
新笔趣阁网址:
https://www.xxbqg5200.com/
复制
看下网站首页:

随便点进一本小说:
https://www.xxbqg5200.com/shu/421/
复制
章节链接和章节标题都在网页源代码中:
点进去第一章,我们看下源代码,发现我们需要爬取的内容也都在网页源代码中,这就很方便我们爬取了。
爬取思路:
- 向小说链接发送请求 - 获取小说章节链接
- 向小说章节链接发送请求 - 获取章节文本内容
- 以小说章节标题为名保存小说文本内容
实战代码
导入需要用到的模块:
import requests
import re
import time
复制
伪装请求头:
headers = {
'User-Agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; LBBROWSER)'
}
复制
发送请求,获取响应,网页会发生编码错误,所以要进行解码:
resposn = requests.get(url='https://www.xxbqg5200.com/shu/421/', headers=headers)
resposn.encoding = resposn.apparent_encoding
复制
用正则表达式提取小说章节链接:
url_list = re.findall('<dd><a href="(.*?)">.*?</a></dd>', resposn.text)
复制
爬取的章节链接并不完整,所以需要循环取出章节链接,然后对链接进行拼接成完整链接,接着继续发送请求。
for url in url_list:
url = 'https://www.xxbqg5200.com/' + url
res = requests.get(url=url, headers=headers)
res.encoding = res.apparent_encoding
html = res.text
复制
提取标题:
title = re.findall('<h1>(.*?)</h1>', html)[0]
复制
文本内容主要保存在一个div标签中,这里用re.S忽略一些多余的空行之类的,然后用replace清除一些多余的符号:
text = re.findall('<div id="content">(.*?)</div>', html, re.S)[0]
data_text = text.replace(' ', '').replace('<br />', '')
复制
保存小说文本内容:
with open('./杀神/{}.txt'.format(title), mode='w', encoding='utf-8', newline="") as f:
f.write(title + '\n')
f.write(data_text)
f.close()
复制
小结
1、本文基于Python,利用python爬虫模块,实现爬取小说数据并保存下来。
2、本文代码较少,但不够完美,未使用面向过程方法构写,而且爬取速度较慢。
3、如果需要爬取整站小说,可以通过网站首页网址,然后获取一本本小说的链接,接着继续套娃。