首頁  >  文章  >  後端開發  >  Python爬蟲-scrapy介紹及使用

Python爬蟲-scrapy介紹及使用

angryTom
angryTom轉載
2019-11-29 15:56:295215瀏覽

scrapy的流程

Python爬蟲-scrapy介紹及使用

其流程可以描述如下:

● 調度器把requests-->引擎- ->下載中間件--->下載器

● 下載器發送請求,取得回應---->下載中間件---->引擎--->爬蟲中間件--->爬蟲

● 爬蟲提取url位址,組裝成request物件---->爬蟲中間件--->引擎--->調度器

● 爬蟲提取資料--->引擎--->管道

● 管道進行資料的處理與保存

建議學習:Python影片教學  

注意:

圖中綠色線條的表示資料的傳遞

注意圖中中間件的位置,決定了其作用

注意其中引擎的位置,所有的模組之前相互獨立,只和引擎進行交互

scrapy中每個模組的具體作用

Python爬蟲-scrapy介紹及使用

 1.scrapy項目實作流程

建立一個scrapy專案:scrapy startproject 專案名稱

產生一個爬蟲:scrapy genspider 爬蟲名稱允許爬取的範圍

擷取資料:完善spider,使用xpath等方法

儲存資料:pipeline中儲存資料

2. 建立scrapy專案

指令:scrapy startproject

範例:scrapy startproject myspider

#產生的目錄與檔案結果如下:

Python爬蟲-scrapy介紹及使用

settings.py中的重點欄位與內涵

● USER_AGENT 設定ua

● ROBOTSTXT_OBEY 是否遵守robots協議,預設是遵守

● CONCURRENT_REQUESTS 設定並發請求的數量,預設為16個

#● DOWNLOAD_DELAY 下載延遲,預設無延遲

● COOKIES_ENABLED 是否開啟cookie,即每次請求帶上前一次的cookie,預設是開啟的

● DEFAULT_REQUEST_HEADERS 設定預設請求頭

● SPIDER_MIDDLEWARES 爬蟲中間件,設定流程與管線相同

● DOWNLOADER_MIDDLEWARES 下載中間件

#建立爬蟲

指令: scrapy genspider

產生的目錄與檔案結果如下:

Python爬蟲-scrapy介紹及使用

完善spider

完善spider即透過方法進行資料的提取等操做:

Python爬蟲-scrapy介紹及使用

注意:

● response.xpath方法的回傳結果是一個類似list的類型,其中包含的是selector對象,操作和列表一樣,但是有一些額外的方法

● extract() 傳回一個包含有字串的列表

● extract_first() 傳回清單中的第一個字串,清單為空沒有回傳None

● spider中的parse方法必須有

#● 需要抓取的url位址必須屬於allowed_domains,但是start_urls中的url位址沒有這個限制

● 啟動爬蟲的時候注意啟動的位置,是在專案路徑下啟動

#資料傳遞到pipeline

Python爬蟲-scrapy介紹及使用

為什麼要使用yield?

● 讓整個函數變成一個生成器,有什麼好處呢?

● 遍歷這個函數的返回值的時候,挨個把資料讀到內存,不會造成內存的瞬間佔用過高

● python3中的range和python2中的xrange同理

注意:

yield能夠傳遞的物件只能是:BaseItem,Request,dict,None

6. 完善pipeline

Python爬蟲-scrapy介紹及使用

Python爬蟲-scrapy介紹及使用

pipeline在settings中能夠開啟多個,為什麼需要開啟多個?

● 不同的pipeline可以處理不同爬蟲的資料

● 不同的pipeline能夠進行不同的資料處理的操作,例如一個進行資料清洗,一個進行資料的保存

pipeline使用注意點

● 使用之前需要在settings中開啟

● pipeline在setting中鍵表示位置(即pipeline在專案中的位置可以自訂),值表示距離引擎的遠近,越近資料會越先經過

● 有多個pipeline的時候,process_item的方法必須return item,否則後一個pipeline取到的資料為None值

● pipeline中process_item的方法必須有,否則item沒有辦法接受與處理

● process_item方法接受item和spider,其中spider表示目前傳遞item過來的spider

本文來自python教學 欄目,歡迎學習!  

以上是Python爬蟲-scrapy介紹及使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:cnblogs.com。如有侵權,請聯絡admin@php.cn刪除