用python爬取全站小说,你想看的都爬下来!

作者: 锋小刀
微信搜索【职场办公杂技】关注我的公众号

小说,宅男必备,也是当今社会人们打发时间的一种方式。今天教大家爬取新笔趣阁小说网,获取网站小说数据,保存为对应的txt文件。

分析网页

新笔趣阁网址:

https://www.xxbqg5200.com/

看下网站首页:
用python爬取全站小说,你想看的都爬下来!_第1张图片
随便点进一本小说:

https://www.xxbqg5200.com/shu/421/

用python爬取全站小说,你想看的都爬下来!_第2张图片
章节链接和章节标题都在网页源代码中:
用python爬取全站小说,你想看的都爬下来!_第3张图片
点进去第一章,我们看下源代码,发现我们需要爬取的内容也都在网页源代码中,这就很方便我们爬取了。
用python爬取全站小说,你想看的都爬下来!_第4张图片
爬取思路:

  • 向小说链接发送请求 - 获取小说章节链接
  • 向小说章节链接发送请求 - 获取章节文本内容
  • 以小说章节标题为名保存小说文本内容

实战代码

导入需要用到的模块:

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('
.*?
'
, resposn.text)

用python爬取全站小说,你想看的都爬下来!_第5张图片
爬取的章节链接并不完整,所以需要循环取出章节链接,然后对链接进行拼接成完整链接,接着继续发送请求。

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('

(.*?)

'
, html)[0]

文本内容主要保存在一个div标签中,这里用re.S忽略一些多余的空行之类的,然后用replace清除一些多余的符号:

    text = re.findall('
(.*?)
'
, html, re.S)[0] data_text = text.replace(' ', '').replace('
'
, '')

用python爬取全站小说,你想看的都爬下来!_第6张图片
保存小说文本内容:

    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爬虫,python)