這篇文章才是學習scrapy高效爬蟲框架的正確姿勢

2021-10-07 02:08:38 字數 2407 閱讀 5007

寫給看到最後的你

scrapy 是一套基於基於twisted的非同步處理框架,純python實現的爬蟲框架,使用者只需要定製開發幾個模組就可以輕鬆的實現乙個爬蟲,用來抓取網頁內容以及各種,非常方便

(1)、排程器(scheduler):

爬蟲,是使用者最關心的部份。使用者定製自己的爬蟲(通過定製正規表示式等語法),用於從特定的網頁中提取自己需要的資訊,即所謂的實體(item)。

使用者也可以從中提取出鏈結,讓scrapy繼續抓取下乙個頁面。

實體管道,用於處理爬蟲(spider)提取的實體。主要的功能是持久化實體、驗證實體的有效性、清除不需要的資訊。

如果還是不明白看一下csdn大佬整理的圖

settings.py: 本爬蟲的一些配置資訊 比如請求頭,**等

rule()類

執行:scapy crawl 爬蟲名

舉個例子:

模擬登入豆瓣:

# 首先重寫start_request方法 ,進行訪問豆瓣並返回乙個json

defstart_requests

(self)

:yield scrapy.request(

'',callback=self.login)

# 然後進行登入操作

deflogin

(self,response)

: url =

''# 以dict 的形式進行封裝

data =

yield scrapy.formrequest(url,formdata=data,callback=self.

next

)

重用item pipelines 使用files pipeline 或者是 images pipeline

在item_pipelines 中設定scrapy.pipeines.files.filespipeline:1

for url in item[「image_urls」]:

yield resquest(url, mate=)

```遇見反爬的**,可以設定user-agent 以及 **ip

兩個類方法process_request(self,request,spider)以及process_response(self, request, response, spider)

返回none的時候:scrapy繼續處理request 執行其他中介軟體

返回response的時候:不會在呼叫其他方法直接返回這個request

# 修改 middlewares 中的 download**********middleware 類

defprocess_request

(self, request, spider)

: user_agent =[,

,,] user_agent = random.choice(user_agent)

# 隨機獲取乙個ua

request.headers[

'user_agent'

]= user_agent

# 設定請求頭

# 這個**ip是我買的,還有一些可以用,分享給各位

response_ip = requests.get(

'').content.decode(

)# 通過api呼叫介面返回資料後進行解析

# 進行拼接ip 不要忘記了新增上http://或者是https://

request.meta[

'proxy'

]= ip

感謝你能看到最後,我想這便是給創作者的莫大鼓勵

這篇文章只是一些基礎的知識,我還在更新,畢竟還有很多要學.

這篇文章說到點子上了!!

北美家長團 百家號05 2817 42 以前認識乙個美國女孩在中國學習政治經濟,學成之後進入德勤工作,這似乎與她最初的理想相去甚遠,但她仍然非常高興能夠找到乙份待遇不錯的工作。可能很多人會覺得這個女孩的決定很難理解,因為在很多人看來美國年輕人似乎不必為了生存而放棄自己的理想和專業,只有中國的年輕人才...

自律只需要這篇文章

1.鑽研,只要你有乙個方面特別優秀,則在這個社會就足夠了,能夠吃一輩子 2.領悟,需要的時候,別人給你只是乙個具體的方向,具體的路還是要自己去設計 3.執行力,晚上喜歡想想沒有小本本記錄,那麼第二天就忘了,所以床頭一定備個備忘錄,還要有行動能力,不然你就不要記錄,最好就不要想 4.落實,每天幻想自己...

vue開發看這篇文章就夠了

每個月,我們幫助 1000 萬的開發者解決各種各樣的技術問題。並助力他們在技術能力 職業生涯 影響力上獲得提公升。一二三 16 小時前發布 庫,本質上是一些函式的集合。每次呼叫函式,實現乙個特定的功能,接著把控制權交給使用者框架,是一套完整的解決方案,使用框架的時候,需要把你的 放到框架合適的地方,...