scrapy利用下載器中間件給request對象修改User-Agent

middlewares.py編寫

from p5.settings import UserAgent_list

import random

class RandomUserAgentMiddleware(object):
	#當每個request請求發送給目標網站時調用,用於處理或修改request對象
    def process_request(self, request, spider):
        ua = random.choice(UserAgent_list)
        request.headers["User-Agent"] = ua
        return None

class CheckUserAgent(object):
	#,在將request獲取到響應傳遞給引擎之前調用,在將響應傳遞給引擎之前處理收到的響應,如:響應失敗重新請求,或將失敗的做一定處理再返回給引擎
    def process_response(self, request, response, spider):
        print(request.headers["User-Agent"])
        return response

在settings.py中開啓下載器中間件

DOWNLOADER_MIDDLEWARES = {
    'p5.middlewares.RandomUserAgentMiddleware': 543,
    'p5.middlewares.CheckUserAgent': 544,
}

常見的User-Agent列表

USER_AGENT_LIST = [“User-Agent,Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;”,“User-Agent,Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)”,“User-Agent,Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)”,“User-Agent, Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”,“User-Agent, Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv,2.0.1) Gecko/20100101 Firefox/4.0.1”,“User-Agent,Mozilla/5.0 (Windows NT 6.1; rv,2.0.1) Gecko/20100101 Firefox/4.0.1”,“User-Agent,Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11”,“User-Agent,Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11”,“User-Agent,Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50”,“User-Agent, Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)”,“User-Agent, Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)”,“User-Agent, Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)”]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章