1.python爬蟲——開源項目scrapy

PySpider

PySpider詳細介紹

PySipder是一個Python爬蟲程序

演示地址:http://demo.pyspider.org/

l使用Python編寫腳本,提供強大的API

lPython 2&3

l強大的WebUI和腳本編輯器、任務監控和項目管理和結果查看

l支持JavaScript頁面

l后端系統支持:MySQL,MongoDB, SQLite, Postgresql

l支持任務優先級、重試、定期抓取等

l分布式架構

下載地址:https://github.com/binux/pyspider

Scrapy

Scrapy是一套基于基于Twisted的異步處理框架,純python實現的爬蟲框架,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片

下載鏈接:

https://github.com/scrapy/scrapy

Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。

所謂網絡爬蟲,就是一個在網上到處或定向抓取數據的程序,當然,這種說法不夠專業,更專業的描述就是,抓取特定網站網頁的HTML數據。抓取網頁的一般方法是,定義一個入口頁面,然后一般一個頁面會有其他頁面的URL,于是從當前頁面獲取到這些URL加入到爬蟲的抓取隊列中,然后進入到新頁面后再遞歸的進行上述的操作,其實說來就跟深度遍歷或廣度遍歷一樣。

Scrapy使用Twisted這個異步網絡庫來處理網絡通訊,架構清晰,并且包含了各種中間件接口,可以靈活的完成各種需求。

l引擎(Scrapy

Engine),用來處理整個系統的數據流處理,觸發事務。

l調度器(Scheduler),用來接受引擎發過來的請求,壓入隊列中,并在引擎再次請求的時候返回。

l下載器(Downloader),用于下載網頁內容,并將網頁內容返回給蜘蛛。

l蜘蛛(Spiders),蜘蛛是主要干活的,用它來制訂特定域名或網頁的解析規則。編寫用于分析response并提取item(即獲取到的item)或額外跟進的URL的類。每個spider負責處理一個特定(或一些)網站。

l項目管道(Item

Pipeline),負責處理有蜘蛛從網頁中抽取的項目,他的主要任務是清晰、驗證和存儲數據。當頁面被蜘蛛解析后,將被發送到項目管道,并經過幾個特定的次序處理數據。

l下載器中間件(Downloader

Middlewares),位于Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請求及響應。

l蜘蛛中間件(Spider

Middlewares),介于Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應輸入和請求輸出。

l調度中間件(Scheduler

Middlewares),介于Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。

爬取流程

上圖綠線是數據流向,首先從初始URL開始,Scheduler會將其交給Downloader進行下載,下載之后會交給Spider進行分析,Spider分析出來的結果有兩種:一種是需要進一步抓取的鏈接,例如之前分析的“下一頁”的鏈接,這些東西會被傳回Scheduler;另一種是需要保存的數據,它們則被送到Item Pipeline那里,那是對數據進行后期處理(詳細分析、過濾、存儲等)的地方。另外,在數據流動的通道里還可以安裝各種中間件,進行必要的處理。

數據流

Scrapy中的數據流由執行引擎控制,其過程如下:

引擎打開一個網站(open a domain),找到處理該網站的Spider并向該spider請求第一個要爬取的URL(s)。

引擎從Spider中獲取到第一個要爬取的URL并在調度器(Scheduler)以Request調度。

引擎向調度器請求下一個要爬取的URL。

調度器返回下一個要爬取的URL給引擎,引擎將URL通過下載中間件(請求(request)方向)轉發給下載器(Downloader)。

一旦頁面下載完畢,下載器生成一個該頁面的Response,并將其通過下載中間件(返回(response)方向)發送給引擎。

引擎從下載器中接收到Response并通過Spider中間件(輸入方向)發送給Spider處理。

Spider處理Response并返回爬取到的Item及(跟進的)新的Request給引擎。

引擎將(Spider返回的)爬取到的Item給Item

Pipeline,將(Spider返回的)Request給調度器。(從第二步)重復直到調度器中沒有更多地request,引擎關閉該網站。

官方教程

http://scrapy-chs.readthedocs.io/zh_CN/latest/intro/tutorial.html

安裝

最快方式是如下命令:

pipinstall scrapy

當然前提需要時有PIP命令了。

Portia

Portia是scrapyhub開源的一款可視化的爬蟲規則編寫工具。它提供可視化的Web頁面,你只需要通過點擊標注頁面上你需要抽取的數據,不需要任何編程知識即可完成規則的開發。

這些規則可以在#Scrapy#中使用,用于抓取頁面。

https://github.com/scrapinghub/portia

感謝打賞~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容