本文圖檔以及文本僅供學習、交流使用,不做商業用途,如有問題請及時聯系我們以作處理。
前言
小說,宅男必備,也是當今社會人們打發時間的一種方式。今天教大家爬取新筆趣閣小說網,擷取網站小說資料,儲存為對應的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、如果需要爬取整站小說,可以通過網站首頁網址,然後擷取一本本小說的連結,接着繼續套娃。