1. 程式人生 > >誰當年還沒看過幾本小說!我用Python爬取全站的的小說!

誰當年還沒看過幾本小說!我用Python爬取全站的的小說!

nec 打印 b數 技術分享 mon 結果 鏈接 ons ide

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

然後再將請求發送出去,定義變量response,用read()方法觀察,註意將符號解碼成utf-8的形式,省的亂碼:

技術分享圖片

打印一下看結果:

技術分享圖片

看到這麽一大條就對嘍,對比一下網頁源碼,發現是一致的。

技術分享圖片

技術分享圖片

技術分享圖片

失敗狀態

技術分享圖片

成功狀態

添加路徑後成功連接,出現waiting for connections on port 27017,則表示數據庫連接成功,而後就不要關掉這個終端了,只有保持數據庫是連接的,才可運行MongoDB數據庫(不然報錯你都不知道自己是怎麽死的)

好了,連接好數據庫後,我們將數據庫與編輯器進行交互鏈接,位置很隱秘,在File>>Settings>>Plugins下添加組件Mongo Plugin,沒有就下載一個:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

如果你決定使用xpath之後,我們需要從lxml中引入etree模塊,然後就可以用etree中的HTML()方法來解析網頁了,從網頁>檢察元素(F12)中復制下來我們所需數據的路徑,我選擇的是小說每章的標題和內容,上圖,上圖:

技術分享圖片

路徑//div[@class="readAreaBox content"]/h1/text()

技術分享圖片

路徑/html/body/div[4]/div[2]/div[2]/div[1]/div[2]/text()

註意註意,又來一個坑,當你復制xpath時得到的是這個東東:

//div[@class="readAreaBox content"]/h1

和這個東東;

/html/body/div[4]/div[2]/div[2]/div[1]/div[2]

但你需要的是這個路徑裏的文本text,故我們需要另外添加具體文本:/text(),然後就像上面那樣啦。上代碼,查數據:

技術分享圖片

完整代碼見百度網盤:私信小編02即可獲取雲盤地址

小說有點大,一共是三千五百章,等個大約4-7分鐘吧,打開文件夾《修羅武神小說》,就可以看到我們下載好的無需翻頁的一整部小說,數據庫內頁備份好了每章的鏈接,它自動從零開始排的,就是說你要看第30章就得打開序號為29的鏈接,這個調一下下載時的順序就好了,作者很懶,想要嘗試下的讀者可以自行更改。

技術分享圖片

小說文本

技術分享圖片

數據庫連接

看看,感覺還不錯吧,好的小例子講完了,接下來我們準備進入正題。

技術分享圖片

技術分享圖片

Scrapy插件安裝成功

然後還是老規矩,不想每次終端運行都一點一點找路徑的話,就將根目錄添加到環境變量,然後打開終端,我們測試一下是否安裝成功:

技術分享圖片

Scrapy安裝成功

好,安裝完畢後,打開終端,新建一個Scrapy工程,這裏你可以根據索引,選擇使用Scrapy的各種功能,這裏不一一詳解了,D盤內已經出現了我們建立好的Scrapy工程文件夾:

技術分享圖片

技術分享圖片

打開文件夾,我們會看到Scrapy框架已經自動在reading文件夾中放置了我們所需的一切原材料:

技術分享圖片

打開內部reading文件夾,就可以在spiders文件夾中添加爬蟲py代碼文件了:

技術分享圖片

我們這裏定向爬小說排行榜,除了我們寫的spider文件,還要在items.py中定義我們要爬取的內容集,有點像詞典一樣,名字可以隨便取,但已有的繼承類scrapy.Item可不能改,這是Scrapy內部自定義的類,改了它可找不到,spider就用我們上面抓取單本再加一個for循環就OK了,十分簡單,一言不合就上圖:

技術分享圖片

爬蟲文件截圖

技術分享圖片

爬取的小說排行榜

技術分享圖片

每個排行榜上大約20本小說

技術分享圖片

每部小說的爬取情況(用的是.json格式)

技術分享圖片

進群:125240963 即可獲取源碼

誰當年還沒看過幾本小說!我用Python爬取全站的的小說!