python爬蟲之小說網站--下載小說(正則表達式)


python爬蟲之小說網站--下載小說(正則表達式)

思路:

1.找到要下載的小說首頁,打開網頁源代碼進行分析(例:https://www.kanunu8.com/files/old/2011/2447.html)

2.分析自己要得到的內容,首先分析url,發現只有后面的是變化的,先獲得小說的沒有相對路徑,然后組合成新的url(每章小說的url)

3.獲得每章小說的內容,進行美化處理

 

代碼如下:

#小說爬蟲
import requests import re url='https://www.kanunu8.com/book4/10509/'
#因為編碼原因,先獲取二進制內容再進行解碼
txt=requests.get(url).content.decode('gbk') #當前小說編碼為"gbk2312"
m1=re.compile(r'<td colspan="4" align="center"><strong>(.+)</strong>') #print(m1.findall(txt))
m2=re.compile(r'<td( width="25%")?><a href="(.+\.html)">(.+)</a></td>') #print(m2.findall(txt))
raw=m2.findall(txt) #獲得小說的目錄以及對應的每個章節的相對路徑
sanguo=[] for i in raw: sanguo.append([i[2],url+i[1]])  #生成每個章節的url

#print(sanguo)
 m3=re.compile(r'<p>(.+)</p>',re.S)  #每章節小說內容
m4=re.compile(r'<br />')            #<br />小說內容中的符號
m5=re.compile(r'&nbsp;&nbsp;&nbsp;&nbsp;') with open('中國合伙人1.txt','a') as f: for i in sanguo: i_url=i[1]  #i[1]為小說章節url
        print("正在下載----->",i[0])    #i[0]為小說章節目錄
        r_nr=requests.get(i_url).content.decode('gbk') n_nr=m3.findall(r_nr) #print(n_nr)
        n=m4.sub('',n_nr[0]) #把n_nr[0]中"<br />"替換為空
        n2=m5.sub('',n) f.write('\n'+i[0]+'\n') #把小說的目錄寫入文件
        f.write(n2)

運行效果如下:

保存的內容如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM