Python超簡單超基礎的免費小說爬蟲!爬蟲入門從這開始!

爬遍天下無敵手發表於2020-10-23

需要準備的環境

1.python 3.0及以上皆可
2.requests庫,os,re

選取網頁

找一個免費的小說網站,我在這裡拿http://www.zanghaihua.org/wanlishiwunian/ 來舉例子

思路

PS:如有需要Python學習資料的小夥伴可以加點選下方連結自行獲取

python免費學習資料以及群交流解答點選即可加入

1.首先來看看網頁的結構
右鍵網頁,點選“檢視網頁原始碼”


不難發現看到章節連結的格式都是</span><span> <a href="章節網址">章節名稱</a>


隨便點開一個章節,進入小說內容頁面,然後再去看看原始碼


還是不難發現文字的結構是<div class="bookcontent clearfix" id="BookText">內容<br/><br/><div

我們可以把爬取每個章節連結存到一個列表裡面,再讓python再次訪問這個連結去爬取內容,最後寫入文件,接下來直接上程式碼,註釋我都寫好了。

”我看你就是講不懂才直接上程式碼的“
閉嘴[滑稽]

程式碼

#匯入庫
import requests
import os
import re

#定義請求協議頭
headers = {

'accept': '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9',
'referer': 'http://www.zanghaihua.org/wanlishiwunian/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400',
}

mulu_url = 'http://www.zanghaihua.org/wanlishiwunian/'#目錄網址
html = requests.get(mulu_url,headers=headers)#目錄原始碼
html.encoding = 'utf-8'#文字相容
psgurl_list = []#建立章節網址列表
psgname_list = []#建立章節名稱列表
psg_urls =re.findall('</span><span> <a href="(.*?)">.*?</a>',html.text)#獲得每個章節的網址
psg_names = re.findall('</span><span> <a href=".*?">(.*?)</a>',html.text)#獲得每個章節的名稱
#通過for迴圈每次搜尋一到一個加入一個到列表
for psg_urls in psg_urls:
    psgurl_list.append(psg_urls)
book = open('萬曆十五年.txt',mode='w')#提前開啟文字文件
for i in range(1,46):#這裡1和46是章節數,應該有更好的方法,但是我就會這個QAQ
    i+1
    mymes_html = requests.get(psgurl_list[i],headers=headers)
    mes_names = psg_names[i]
#爬出來是亂碼,我們讓文字相容一下
    mymes_html.encoding = 'utf-8'
    mes_html = mymes_html.text

#過濾一下符號英文字母以及分段
    mes_br = re.findall('<div class="bookcontent clearfix" id="BookText">(.*?)<br/><br/><div',mes_html)#爬取內容
    str1 = ' '.join(mes_br )#列表轉字串
    mes = re.sub('<br/><br/>',' ',str1)#過濾爬出來文字中的雜亂符號
    allmes =  mes_names+ '\n' + mes#每段加入文章名

    #寫入工作

    book.write(allmes+'\n')#寫入
book.close()#關閉文字文件

最後在py檔案同一目錄下出現了一個文字文件,點開


成功了

總結

此爬蟲是受Macro大佬的微博圖片爬蟲受啟發寫出來的。

這種方法只適合一些小網站,收費的網站需要js解析等等,作為萌新這點就夠練了。
萌新的第一個部落格,程式碼上面可能有點不簡潔,有什麼建議可以提出來,不喜勿噴。

最後祝各位萬事成功!Go fot it!

 

 

相關文章