Scrapy (網絡爬蟲框架)入門

一.Scrapy 簡介:linux

Scrapy是用純Python實現一個爲了爬取網站數據、提取結構性數據而編寫的應用框架,Scrapy 使用了 Twisted['twɪstɪd](其主要對手是Tornado)異步網絡框架來處理網絡通信,能夠加快咱們的下載速度,不用本身去實現異步框架,而且包含了各類中間件接口,能夠靈活的完成各類需求。網絡

二.Scrapy框架框架

1.框架圖異步

綠色線是數據流向scrapy

2.框架圖講解:ide

功能講解:網站

 

Scrapy Engine(引擎): 負責Spider、ItemPipeline、Downloader、Scheduler中間的通信,信號、數據傳遞等。url

Scheduler(調度器): 它負責接受引擎發送過來的Request請求,並按照必定的方式進行整理排列,入隊,當引擎須要時,交還給引擎。spa

Downloader(下載器):負責下載Scrapy Engine(引擎)發送的全部Requests請求,並將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,中間件

Spider(爬蟲):它負責處理全部Responses,從中分析提取數據,獲取Item字段須要的數據,並將須要跟進的URL提交給引擎,再次進入Scheduler(調度器),

Item Pipeline(管道):它負責處理Spider中獲取到的Item,並進行進行後期處理(詳細分析、過濾、存儲等)的地方.

Downloader Middlewares(下載中間件):你能夠看成是一個能夠自定義擴展下載功能的組件。

Spider Middlewares(Spider中間件):你能夠理解爲是一個能夠自定擴展和操做引擎和Spider中間通訊的功能組件(好比進入Spider的Responses;和從Spider出去的Requests)

3.代碼執行順序:

 

①SPIDERS的yeild將request發送給ENGIN
②ENGINE對request不作任何處理髮送給SCHEDULER
③SCHEDULER( url調度器),生成request交給ENGIN
④ENGINE拿到request,經過MIDDLEWARE進行層層過濾發送給DOWNLOADER
⑤DOWNLOADER在網上獲取到response數據以後,又通過MIDDLEWARE進行層層過濾發送給ENGIN
⑥ENGINE獲取到response數據以後,返回給SPIDERS,SPIDERS的parse()方法對獲取到的response數據進行處理,解析出items或者requests
⑦將解析出來的items或者requests發送給ENGIN
⑧ENGIN獲取到items或者requests,將items發送給ITEM PIPELINES,將requests發送給SCHEDULER

 

4.我的理解,代碼執行過程:

代碼從爬蟲文件,spider開始爬取 > 爬取的網絡請求發送給引擎 > 引擎分給調度器 > 調度器將請求放入隊列中 > 分給下載器去處理request並獲取response > 下載器將response發送給引擎,引擎又分配給爬蟲spider處理,(處理數據的是爬蟲文件中的parse方法),處理以後的數據 > 交給管道pipelines去存儲,在處理過程當中 > 有新的請求,會再次執行上述過程

 

三 . Scrapy框架下創建爬蟲項目

在linux系統平臺下:

在終端執行命令:

1.建立項目:scrapy startproject  項目名稱

2.建立爬蟲:首先進入剛剛建立的項目目錄下

                 接着執行:scrapy genspider  爬蟲名  爬取的域名

3.執行怕爬蟲:scrapy  crawl  爬蟲名稱

下圖爲常見命令:

 

四.配置pycharm 讓Scrapy項目直接運行

步驟:1.首先在item.py配置,爬取的目標字段

格式:字段=scrapy.Field()

2.編寫爬蟲文件

3.編寫pipelines管道文件

4.在settings.py中設置下

該字段右True改爲False

在setting中打開ITEN_PIPELINES

 

5.在終端運行:執行爬蟲文件的命令:scrapy  crawl  爬蟲名稱

就能夠爬取到須要的數據,並保存在pipelines中設置的文件中

 

以上是scrapy的簡單瞭解,接下來可使用scrapy結合pycharm,進行網絡爬蟲的嘗試了

相關文章
相關標籤/搜索