天天看點

Scrapy中添加随機UserAgent本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述

本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述

首先如下圖的架構,我們需要清楚User-Agent的僞裝是在發送請求的Headers中,DOWNLOADER_MIDDLEWARES就是橋梁,發送請求之前的位置可以進行處理request請求,也就是在這裡進行userAgent的添加!

Scrapy中添加随機UserAgent本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述

需要在middlewares.py中添加以下類和方法,具體結構如代碼所示:

1、定義RandomUserAgentMiddleware(object) 注:類名随意需要和settings.py中的一緻

2、寫一個process_request方法:

不論哪種方法都需要在settings.py中打開 DOWNLOADER_MIDDLEWARES:

Scrapy中添加随機UserAgent本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述

方法一:

需要在settings.py中添加一個USER_AGENT_LIST的清單,如下圖:

注:清單的UserAgent,截圖我隻保留了3個請忽略!

Scrapy中添加随機UserAgent本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述
class RandomUserAgentMiddleware(object):
   	 	# 第一種方法在Setting中手動添加Headers列别,随機選擇
    	def process_request(self, request, spider):
       		request.headers["User-Agent"] = random.choice(spider.settings.get("USER_AGENT_LIST"))
           

方法二:

隻需要導入fake_useragent這個useragent庫

from fake_useragent import UserAgent
class RandomUserAgentMiddleware(object):
    # 第二種方法導入fake_useragent這個useragent庫可以用random函數随機選擇Headers
    def process_request(self, request, spider):
        request.headers["User-Agent"] = UserAgent().random
           

到底有沒有效果列印Headers中的User-Agent,列印語句放在爬蟲裡面執行就可以了

下圖是我的爬蟲執行後的結果随機産生User-Agent

Scrapy中添加随機UserAgent本文直接講兩種方法添加随機UserAgent,具體Scrapy不在闡述

總結一下,新手上路學習爬蟲,博文完全由自己手工撰寫,旨在記錄學習,架構結構圖系網絡圖檔,如有雷同請見諒,本文僅做個人學習交流,歡迎大家指正,謝謝!

繼續閱讀