天天看點

用python爬取全站小說,你想看的都爬取下來!

本文圖檔以及文本僅供學習、交流使用,不做商業用途,如有問題請及時聯系我們以作處理。

前言

小說,宅男必備,也是當今社會人們打發時間的一種方式。今天教大家爬取新筆趣閣小說網,擷取網站小說資料,儲存為對應的txt檔案。

分析網頁

新筆趣閣網址:

https://www.xxbqg5200.com/
           

複制

看下網站首頁:

用python爬取全站小說,你想看的都爬取下來!

随便點進一本小說:

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

複制

用python爬取全站小說,你想看的都爬取下來!

章節連結和章節标題都在網頁源代碼中:

用python爬取全站小說,你想看的都爬取下來!

點進去第一章,我們看下源代碼,發現我們需要爬取的内容也都在網頁源代碼中,這就很友善我們爬取了。

用python爬取全站小說,你想看的都爬取下來!

爬取思路:

  • 向小說連結發送請求 - 擷取小說章節連結
  • 向小說章節連結發送請求 - 擷取章節文本内容
  • 以小說章節标題為名儲存小說文本内容

實戰代碼

導入需要用到的子產品:

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)
           

複制

用python爬取全站小說,你想看的都爬取下來!

爬取的章節連結并不完整,是以需要循環取出章節連結,然後對連結進行拼接成完整連結,接着繼續發送請求。

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('&nbsp;', '').replace('<br />', '')
           

複制

用python爬取全站小說,你想看的都爬取下來!

儲存小說文本内容:

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、如果需要爬取整站小說,可以通過網站首頁網址,然後擷取一本本小說的連結,接着繼續套娃。