Pyspider:爬取中國全部大學

pyspider簡介:PySpider是一個國人編寫的強大的網絡爬蟲系統並帶有強大的WebUI。採用Python語言編寫,分佈式架構,支持多種數據庫後端,強大的WebUI支持腳本編輯器,任務監視器,項目管理器以及結果查看器。css

安裝:pip install pyspider
啓動:pyspider all
使用:localhost:5000html

clipboard.png

爬取的url咱們取學信網院校信息庫的url"http://gaokao.chsi.com.cn/sch/search--ss-on,searchType-1,option-qg,start-0.dhtml"
點擊create建立項目後,進入編輯頁面:python

clipboard.png

這裏的crawl(URL, callback)兩個參數分別表明要爬取的網站和爬取後的回調函數。最後的結果的形式由return決定。web

clipboard.png

點擊左半面右上角的run執行任務,出現以下界面:數據庫

clipboard.png

下面的web 表明該連接的web界面,html表明該連接的html結構,follows表明該界面上的鏈接,message中顯示爬取過程當中的一些信息。點擊follows中鏈接後面的綠色三角,進入咱們要爬取的界面中。在web界面裏,咱們能夠預覽頁面信息後端

clipboard.png

點擊下面的 enable css selector helper,咱們能夠指定爬取的css塊:網絡

clipboard.png

選中css後,將指針放在python代碼的response.doc()中,點擊左側黑色箭頭,便可將css選擇嵌入到代碼中去架構

clipboard.png

clipboard.png

咱們要爬取的內容就在該頁面處,因此咱們爬取到頁面後,不須要再進行爬取,因此代碼修改以下:編輯器

clipboard.png

點擊右上角的save後,從新run,左側頁面會顯示結果預覽:分佈式

clipboard.png

結果中存在省市的名稱,不符合咱們預期的要求,緣由是咱們在使用css selector時,css selector將省份和學校名稱歸爲一種css了:

clipboard.png

因此咱們只能自定義css selector,打開html界面,分析省份和學校名稱的區別:

clipboard.png

clipboard.png

學校的td標籤存在 align=left屬性,所以咱們將css selector 改成:response.doc('.search td[align^="left"] > a')

save後從新run,獲得咱們想要的結果:

clipboard.png

這只是一頁的結果,學校信息一共有134頁,所以咱們最終修改代碼爲:

clipboard.png

save後,咱們返回pyspider dashboard

clipboard.png

修改1處狀態爲Running或者Debug,點擊2處的Run,爬取的結果能夠經過點擊Results查看:

clipboard.png

能夠在右上角選擇下載數據的樣式,剩下的就是對數據的處理了。

可是事情尚未結束,處理完數據後,咱們發現爬取的結果中學校的數量與學信網上顯示的數量不同!
在Results中咱們找到了一條這樣的數據:

clipboard.png

打開這個鏈接,咱們發現這個網站的粗糙程度遠遠超出了咱們的想象,最後幾條數據的格式居然和前面的不同

clipboard.png

咱們以前設定的 css selector 並不適用於這些數據,對最後這些奇奇怪怪的數據,咱們的css selector須要修改成:

clipboard.png

因此說全國高校名單仍是不要本身爬取了。
2016年全國高等學校名單http://www.moe.edu.cn/srcsite...

相關文章
相關標籤/搜索