本文轉載自如下網站: Scrapy 中設置隨機 User-Agent 的方法彙總 https://www.makcyun.top/web_scraping_withpython14.htmlhtml
一行代碼搞定 Scrapy 中的隨機 UA 設置。python
摘要:爬蟲過程當中的反爬措施很是重要,其中設置隨機 User-Agent 是一項重要的反爬措施,Scrapy 中設置隨機 UA 的方式有不少種,有的複雜有的簡單,本文就對這些方法進行彙總,提供一種只須要一行代碼的設置方式。web
最近使用 Scrapy 爬一個網站,遇到了網站反爬的狀況,因而開始搜索一些反爬措施,瞭解到設置隨機 UA 來假裝請求頭是一種經常使用的方式,這可以作到必定程度上避免網站直接識別出你是一個爬蟲從而封掉你。設置隨機 UA 的方法有挺多種,有的須要好多行代碼,有的卻只須要一行代碼就搞定了,接下來就來介紹下。chrome
首先,說一下常規狀況不使用 Scrapy 時的用法,比較方便的方法是利用 fake_useragent
包,這個包內置大量的 UA 能夠隨機替換,這比本身去搜集羅列要方便不少,下面來看一下如何操做。api
首先,安裝好fake_useragent
包,一行代碼搞定:瀏覽器
pip install fake-useragent |
而後,就能夠測試了:dom
from fake_useragent import UserAgent |
這裏,使用了 ua.random 方法,能夠隨機生成各類瀏覽器的 UA,見下圖:scrapy
若是隻想要某一個瀏覽器的,好比 Chrome ,那能夠改爲 ua.chrome
,再次生成隨機 UA 查看一下:ide
以上就是常規設置隨機 UA 的一種方法,很是方便。測試
下面,咱們來介紹在 Scrapy 中設置隨機 UA 的幾種方法。
先新建一個 Project,命名爲 wanojia
,測試的網站選擇爲:http://httpbin.org/get
。
首先,咱們來看一下,若是不添加 UA 會獲得什麼結果,能夠看到顯示了scrapy
,這樣就暴露了咱們的爬蟲,很容易被封。
下面,咱們添加上 UA 。
第一種方法是和上面程序同樣,直接在主程序中設置 UA,而後運行程序,經過下面這句命令能夠輸出該網站的 UA,見上圖箭頭處所示,每次請求都會隨機生成 UA,這種方法比較簡單,可是每一個 requests 下的請求都須要設置,不是很方便,既然使用了 Scrapy,它提供了專門設置 UA 的地方,因此接下來咱們看一下如何單獨設置 UA。
response.request.headers['User-Agent'] |
第二種方法,是在 settings.py 文件中手動添加一些 UA,而後經過 random.choise
方法隨機調用,便可生成 UA,這種方便比較麻煩的就是須要本身去找 UA,並且增長了代碼行數量。
第三種方法,是使用 fake-useragent 包,在 middlewares.py 中間件中改寫 process_request() 方法,添加如下幾行代碼便可。
from fake_useragent import UserAgent |
而後,咱們回到 settings.py
文件中調用自定義的 UserAgent,注意這裏要先關閉默認的 UA 設置方法才行。
DOWNLOADER_MIDDLEWARES = { |
能夠看到,咱們成功獲得了隨機 UA。
能夠看到,上面幾種方法其實都不太方便,代碼量也比較多,有沒有更簡單的設置方法呢?
有的,只須要一行代碼就搞定,利用一款名爲 scrapy-fake-useragent
的包。
先貼一下該包的官方網址:https://pypi.org/project/scrapy-fake-useragent/,使用方法很是簡單,安裝好而後使用就好了。
執行下面的命令進行安裝,而後在 settings.py 中啓用隨機 UA 設置命令就能夠了,很是簡單省事。
pip install scrapy-fake-useragent |
DOWNLOADER_MIDDLEWARES = { |
咱們輸出一下 UA 和網頁 Response,能夠看到成功輸出告終果。
以上就是 Scrapy 中設置隨機 UA 的幾種方法,推薦最後一種方法,即安裝 scrapy-fake-useragent
庫,而後在 settings 中添加下面這一行代碼便可:
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400, |
另外,反爬措施除了設置隨機 UA 之外,還有一種很是重要的措施是設置隨機 IP,咱們後續再進行介紹。