由於工做緣由,最近一段時間都在作項目的數據建設工做,涉及到使用Pyspider進行數據的爬取及入庫,因此此處系統的整理一下;css
一個國人編寫的強大的網絡爬蟲系統並帶有強大的WebUI。 採用Python語言編寫,分佈式架構,支持多種數據庫後端,強大的WebUI支持腳本編輯器,任務監視器,項目管理器以及結果查看器。 不過目前對代理支持的話,不太好,只能支持單代理,自己不支持多代理,有兩種解決方法:html
- 修改源碼,在發起請求的時候,從代理中心獲取代理地址進行配置訪問;
- 經過 相似squid方法進行獲取,詳細點這裏
- GitHub地址:https://github.com/binux/pyspider
- 中文網地址:http://www.pyspider.cn
每一個組件相互獨立,經過消息隊列鏈接,從單進程到多機分佈式靈活拓展git
Pyspider支持多種存儲,默認使用的sqlite,具體支持以下圖源碼中所列github
默認狀況下,運行的時候,運行目錄的下會生成一個data文件夾,裏面會存儲幾個db文件:web
安裝的話,比較簡單,只有兩步:sql
左側頁面欄爲調試信息可視化,相關區域及按鈕介紹一下:數據庫
右側主要就是用於編寫爬蟲腳本了,新建默認腳本以下: 後端
核心代碼都在BaseHandler中,Handler類繼承BaseHandler,該類在base_handler.py文件中api
crawl_config :爲全局配置對象,經過源碼咱們能夠看到,能夠支持不少配置,可是須要注意,配置是有做用區域的網絡
on_start 入口方法:通常爲主頁面的方法,這名字不能改,由於源碼裏啓動的話入口方法就是on_start,其他index_page,跟detail_page沒有說強制性的,可根據本身需求起名字,就不說了;
@every 註解:用於定時調度,有兩個參數:minutes,seconds;分別也是表明指的多少分鐘執行一次,多少秒執行一次,代碼也在base_handler.py中
@config 註解:用於核心方法self.crawl的配置,在經過配置的,會做爲self.crawl的默認配置;
crawl 核心方法:這個方法就是告訴Pyspider抓取哪一個頁面,我目前爲止也沒都用全,完整的API點擊這裏,有很詳細的解釋
Response 返回對象:經過默認的示例代碼中能夠看到,經過crawl爬取返回的對象就是這個類型,能夠經過response.doc方法,將返回值轉換成PyQuery對象,剩下來的就根據需求去解析元素,提取你須要的東西了;完整API點擊這裏
由於第一次接觸爬蟲,對別的爬蟲技術也不太瞭解,很差作對比,就PySpider來講,用久了仍是方便的,特別是頁面調試,不過剛開始用的話,對Response對象不熟悉,會比較麻煩一點,畢竟沒有PyCharm經過斷點查看對象屬性來的方便; 由於總體來說,比較簡單,這裏就不上傳示例代碼了,看編輯頁面介紹截圖的代碼,就是以前爬保監會網站的代碼,能夠借鑑一下,比較簡單。 另吐槽一下開源中國 對MarkDown的支持,在編輯預覽中看到的,跟發佈出來看到的格式不同。。難受