超級簡單的爬蟲,看Python如何爬取小說

  分享一下一個爬取小說的Python代碼,打開筆趣閣的網站上對應的小說名稱,複製網址,替換url的網址即可,下載速度比較慢,僅用於學習Python

#- - - - 爬蟲軟件 - — - -
#從筆趣閣獲取小說的內容,將內容寫到txt文檔中
#打開筆趣閣的網址,打開對應小說的主頁,將網址複製到python中即可

import re
import os
import requests

url = "https://www.biqudu.net/13_13453/"
txt = requests.get(url).content.decode("UTF-8")

urlArray = url.split('/')
urlArray.remove(urlArray[3])
url = urlArray[0] + "//" + urlArray[2] + "/"   #只保留筆趣閣的網址

m1 = re.compile(r'<h1>(.+)</h1>')      #獲取小說的標題
print(m1.findall(txt)[0].center(23, '='))

file_Name = m1.findall(txt)[0] + ".txt"   #文件名稱

m2 = re.compile(r'<a href="/(.+\.html)">(.+)</a>')
raw = m2.findall(txt)

SHJ = [(i[1], url + i[0]) for i in raw]  # i[1]爲每一章節標題,url+i[0]爲每章節的內容鏈接
print("目錄已加載完畢!")

m3 = re.compile(r'<div id="content">(.+)<script>chaptererror', re.S)  # 每章節小說內容

m4 = re.compile(r"<br/><br/>\u3000\u3000")

isExist = os.path.isfile(file_Name)  #判斷路徑下是否存在對應的文件

if isExist:
    os.remove(file_Name)    #移除存在的文件,防止後續字符寫到前面的文件

with open(file_Name, "a") as f:
    for i in SHJ:
        print("開始下載--->", i[0])
        print("章節網址--->,", i[1])
        t1 = requests.get(i[1]).content.decode("UTF-8")  # 每章節小說內容獲取
        nr = m3.findall(t1)  # [0]
        nrl = m4.sub('', nr[0])
        nrl = nrl.replace("<script>readx();</script>", "") #清除不需要的字符
        nrl = nrl.replace("\r\n", "")
        nrl = nrl.replace("。”", "”")
        nrl = nrl.lstrip()
        # nrl = "  " + nrl
        f.write(i[0])
        f.write("\n\n")
        nrlArray = nrl.split('。')
        for j in nrlArray:
            f.write("  " + j)
            f.write("\n\n")
        # f.write(nrl)
        f.write("\n\n")
print("下載完畢!")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章