本文图片以及文本仅供学习、交流使用,不做商业用途,如有问题请及时联系我们以作处理。
前言
小说,宅男必备,也是当今社会人们打发时间的一种方式。今天教大家爬取新笔趣阁小说网,获取网站小说数据,保存为对应的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、如果需要爬取整站小说,可以通过网站首页网址,然后获取一本本小说的链接,接着继续套娃。
本文分享自 Python与Excel之交 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!