您好,登錄后才能下訂單哦!
這篇文章給大家分享的是Python中scrapy的介紹和使用的詳細教程,相信大部分人都還不知道怎么部署,為了讓大家學會,故而給大家總結了以下內容。
scrapy的流程
其流程可以描述如下:
● 調度器把requests-->引擎-->下載中間件--->下載器
● 下載器發送請求,獲取響應---->下載中間件---->引擎--->爬蟲中間件--->爬蟲
● 爬蟲提取url地址,組裝成request對象---->爬蟲中間件--->引擎--->調度器
● 爬蟲提取數據--->引擎--->管道
● 管道進行數據的處理和保存
注意:
圖中綠色線條的表示數據的傳遞
注意圖中中間件的位置,決定了其作用
注意其中引擎的位置,所有的模塊之前相互獨立,只和引擎進行交互
scrapy中每個模塊的具體作用
1.scrapy項目實現流程
創建一個scrapy項目:scrapy startproject 項目名
生成一個爬蟲:scrapy genspider 爬蟲名 允許爬取的范圍
提取數據:完善spider,使用xpath等方法
保存數據:pipeline中保存數據
2. 創建scrapy項目
命令:scrapy startproject +<項目名字>
示例:scrapy startproject myspider
生成的目錄和文件結果如下:
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 +<爬蟲名字> + <允許爬取的域名>
生成的目錄和文件結果如下:
完善spider
完善spider即通過方法進行數據的提取等操做:
注意:
● response.xpath方法的返回結果是一個類似list的類型,其中包含的是selector對象,操作和列表一樣,但是有一些額外的方法
● extract() 返回一個包含有字符串的列表
● extract_first() 返回列表中的第一個字符串,列表為空沒有返回None
● spider中的parse方法必須有
● 需要抓取的url地址必須屬于allowed_domains,但是start_urls中的url地址沒有這個限制
● 啟動爬蟲的時候注意啟動的位置,是在項目路徑下啟動
數據傳遞到pipeline
為什么要使用yield?
● 讓整個函數變成一個生成器,有什么好處呢?
● 遍歷這個函數的返回值的時候,挨個把數據讀到內存,不會造成內存的瞬間占用過高
● python3中的range和python2中的xrange同理
注意:
yield能夠傳遞的對象只能是:BaseItem,Request,dict,None
6. 完善pipeline
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中scrapy有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。