當前位置:最新電影網 - 小說免費大全 - 使用pyspider抓取起點中文網小說數據

使用pyspider抓取起點中文網小說數據

pyspider 是國人開發的相當好用的爬蟲框架。雖然網上教程不是很多,但是文檔詳細,操作簡單,非常適合用來做爬蟲練習或者實現壹些抓取數據的需求。

本文就以抓取起點中文小說網的小說作品基礎信息作為目標,講解如何使用pyspider框架采集數據。

關於為何要選擇起點作為目標,其壹、筆者作為網文愛好者,也想收集起點小說作品信息,找些熱門小說看;其二、起點作為比較成熟的小說網站,再反爬蟲方面應該有對應策略,剛好練習壹下爬蟲怎麽規避這些策略。

在閱讀本文之前,建議先看壹下文檔及框架作者本人寫的中文教程

pyspider 爬蟲教程(壹):HTML 和 CSS 選擇器

pyspider 爬蟲教程(二):AJAX 和 HTTP

pyspider 爬蟲教程(三):使用 PhantomJS 渲染帶 JS 的頁面

安裝很簡單,如果已安裝pip,直接執行命令

由於目前很多網站都是動態js生成頁面,需要安裝 PhantomJS 來獲得js執行後的頁面,而不是原本靜態的html頁面,我們再來裝壹下

待安裝完成後,我們先看壹下pyspider對應的可執行命令

在這裏我們直接執行如下命令啟動,更復雜的命令參看 文檔

首先看壹下啟動成功後,瀏覽器訪問127.0.0.1:5000地址的界面如下

點擊Create,新建項目

點擊生成的項目名,進入腳本編寫&調試頁面

先看壹下對應的爬蟲腳本

1.測試抓取時,運行壹段時間後出現所有抓取鏈接均FetchError的報錯,抓取失敗

失敗原因:未設置User-Agent 及 抓取速率太快,導致IP被封禁

解決辦法:

1) 設置User-Agent,調整速率從1->0.7

2) 使用代理IP,防止被封禁,這裏筆者嘗試使用搭建 簡易免費代理IP池 ,但是由於免費代理大多不可用,會導致抓取不穩定,還是決定放棄使用

2.筆者本來是打算通過不斷抓取下壹頁的鏈接,來遍歷所有小說作品的,可是由於這部分是JS動態生成的,雖然使用phantomjs,能解決這個問題(具體見作者教程3),但是使用phantomjs會導致抓取效率變低,後來還是選擇采用固定首尾頁數(PAGE_START,PAGE_END)的方法

3.當使用css選擇器有多個數據時,怎麽獲取自己想要的

比如在小說詳細頁,有字數,點擊數,推薦數三個

其css selector均為 .book-info > p > em,要獲取對應的次數只能使用pyquery的.eq(index)的方法去獲取對應的文本數據了

4.如果遇到抓取的鏈接是https,而不是http的,使用self.crawl()方法時,需要加入參數validate_cert =False,同時需要確保pyspider --version 版本再0.3.6.0之上

具體解決方法,可以查看如下鏈接:

PySpider HTTP 599: SSL certificate problem錯誤的解決方法

簡單數據分析之二

采用 SCWS 中文分詞 對所有作品名字進行分詞統計,得到出現頻率最高的排行

看起來如果寫小說,起個『重生之我的神魔異世界』這類標題是不是吊炸天

簡單數據分析之三

簡單統計壹下起點作者的作品數排序

武俠精品應該是起點的官方作者號吧,不然194本作品也太恐怖了

也發現了不少熟悉的大神,比如唐家三少,流浪的蛤蟆,骷髏精靈等,有些作品還是可以看看的