python爬蟲 scrapy五大核心元件和中介軟體

2021-10-19 12:54:46 字數 2359 閱讀 5914

二、工作流程

三、中介軟體

3.2 爬蟲中介軟體

下面這張圖我們在python爬蟲-scrapy基本使用見到過,下面就稍微介紹一下scrapy的五大核心元件和中介軟體

scrapy引擎是用來控制整個系統的資料處理流程,並進行不同事務觸發,是scrapy框架的核心。

排程器包含過濾器和乙個url佇列,排程器接受引擎發過來的請求,由過濾器過濾重複的url並將其壓入url佇列中,當引擎再次請求時,從url佇列中取出下乙個url返回給引擎

item物件定義了爬蟲要抓取的資料的字段,可以像對待字典一樣來儲存和提取item物件中儲存的資料。pipeline主要負責處理spider從網頁中抽取的item,對item進行清洗、驗證,並且將資料持久化。

將響應物件傳遞給引擎之前處理收到的響應,如:響應失敗重新請求,或將失敗請求做一定處理再返回給引擎

主要方法

3.1.1 ua偽裝

class

middlepro**********middleware

(object):

user_agent_list =

[user-agent1,user-agent2,user-agent3...

]def

process_request

(self, request, spider)

: request.headers[

'user-agent'

]= random.choice(self.user_agent_list)

return

none

3.1.2 **ip
class

middlepro**********middleware

(object):

proxy_list=

[proxy1,proxy2,proxy3...

]# 攔截發生異常的請求

defprocess_exception

(self,request,exception,spider)

: request.meta[

'proxy'

= random.choice(self.proxy_list)

return request

3.1.3 整合selenium

使用selenium可以很方便的獲取網頁中動態載入的資料

# 例項化乙個webdriverd瀏覽器物件

def__init__

(self)

: self.driver = webdriver.chrome(

)# 可以將網頁中動態載入的資料獲取到

defprocess_request

(self, request, spider)

: self.driver.get(request.url)

time.sleep(2)

# 包含了動態載入的資料

body = self.driver.page_source

return htmlresponse(url = request.url,

body=body,

encoding=

'utf-8'

, request=request)

爬蟲中介軟體是介於scrapy引擎和spiders之間的鉤子框架,主要是處理引擎傳回的response物件spiders生成的items和requests,可以插入自定義的**來處理傳送給spiders的請求和返回spider獲取的響應內容和專案

更多詳細內容可參考:scrapy高階知識點總結(六)——中介軟體詳解

Python爬蟲 scrapy框架

開源的,對平台的爬蟲框架 舊版本 需要預先定義所需欄位 class myitem scrapy.item url scrapy.field 再將所需欄位填充 class myspier scrapy.spider defparse self,response return sudo apt inst...

python爬蟲scrapy框架

安裝 pip install scrapy startproject 建立乙個新專案 genspider 根據模板生成乙個新爬蟲 crawl 執行爬蟲 shell 啟動互動式抓取控制台 進入專案目錄 scrapy startproject crawlertest project name cd cr...

Python爬蟲 Scrapy基礎

依照順序安裝如下依賴庫,如下 wheel pip install wheel lxml pyopenssl twisted pywin32 220 scrapy pip install scrapy 安裝成功後,通過在cmd的指定路徑下輸入 scrapy startproject hello可以在當...