怎么用代碼搞定Scrapy隨機(jī)User-Agent-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)怎么用代碼搞定Scrapy隨機(jī) User-Agent,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計團(tuán)隊扎實的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識和豐厚的資源優(yōu)勢,提供專業(yè)的網(wǎng)站策劃、網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都十余年的網(wǎng)站建設(shè)設(shè)計經(jīng)驗,為成都近千家中小型企業(yè)策劃設(shè)計了網(wǎng)站。

摘要:爬蟲過程中的反爬措施非常重要,其中設(shè)置隨機(jī) User-Agent 是一項重要的反爬措施,Scrapy 中設(shè)置隨機(jī) UA 的方式有很多種,有的復(fù)雜有的簡單,本文就對這些方法進(jìn)行匯總,提供一種只需要一行代碼的設(shè)置方式。

最近使用 Scrapy 爬一個網(wǎng)站,遇到了網(wǎng)站反爬的情況,于是開始搜索一些反爬措施,了解到設(shè)置隨機(jī) UA 來偽裝請求頭是一種常用的方式,這能夠做到一定程度上避免網(wǎng)站直接識別出你是一個爬蟲從而封掉你。設(shè)置隨機(jī) UA 的方法有挺多種,有的需要好多行代碼,有的卻只需要一行代碼就搞定了,接下來就來介紹下。

▌常規(guī)設(shè)置 UA

首先,說一下常規(guī)情況不使用 Scrapy 時的用法,比較方便的方法是利用 fake_useragent包,這個包內(nèi)置大量的 UA 可以隨機(jī)替換,這比自己去搜集羅列要方便很多,下面來看一下如何操作。

首先,安裝好fake_useragent包,一行代碼搞定:

1pip install fake-useragent

然后,就可以測試了:

1from fake_useragent import UserAgent
2ua = UserAgent()
3for i in range(10):
4    print(ua.random)

這里,使用了 ua.random 方法,可以隨機(jī)生成各種瀏覽器的 UA,見下圖:

怎么用代碼搞定Scrapy隨機(jī) User-Agent

(放大查看)

如果只想要某一個瀏覽器的,比如 Chrome ,那可以改成 ua.chrome,再次生成隨機(jī) UA 查看一下:

怎么用代碼搞定Scrapy隨機(jī) User-Agent

以上就是常規(guī)設(shè)置隨機(jī) UA 的一種方法,非常方便。

下面,我們來介紹在 Scrapy 中設(shè)置隨機(jī) UA 的幾種方法。

先新建一個 Project,命名為 wanojia,測試的網(wǎng)站選擇為:http://httpbin.org/get。

首先,我們來看一下,如果不添加 UA 會得到什么結(jié)果,可以看到顯示了scrapy,這樣就暴露了我們的爬蟲,很容易被封。

怎么用代碼搞定Scrapy隨機(jī) User-Agent

下面,我們添加上 UA 。

▌直接設(shè)置 UA

怎么用代碼搞定Scrapy隨機(jī) User-Agent

第一種方法是和上面程序一樣,直接在主程序中設(shè)置 UA,然后運行程序,通過下面這句命令可以輸出該網(wǎng)站的 UA,見上圖箭頭處所示,每次請求都會隨機(jī)生成 UA,這種方法比較簡單,但是每個 requests 下的請求都需要設(shè)置,不是很方便,既然使用了 Scrapy,它提供了專門設(shè)置 UA 的地方,所以接下來我們看一下如何單獨設(shè)置 UA。

1response.request.headers['User-Agent']

▌手動添加 UA

怎么用代碼搞定Scrapy隨機(jī) User-Agent

第二種方法,是在 settings.py 文件中手動添加一些 UA,然后通過 random.choise 方法隨機(jī)調(diào)用,即可生成 UA,這種方便比較麻煩的就是需要自己去找 UA,而且增加了代碼行數(shù)量。

▌middlewares.py 中設(shè)置 UA

第三種方法,是使用 fake-useragent 包,在 middlewares.py 中間件中改寫 process_request() 方法,添加以下幾行代碼即可。

1from fake_useragent import UserAgent
2class RandomUserAgent(object):
3    def process_request(self, request, spider):
4        ua = UserAgent()
5        request.headers['User-Agent'] = ua.random

然后,我們回到 settings.py 文件中調(diào)用自定義的 UserAgent,注意這里要先關(guān)閉默認(rèn)的 UA 設(shè)置方法才行。

1DOWNLOADER_MIDDLEWARES = {
2    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 
3    'wandoujia.middlewares.RandomUserAgent': 543,
4}

可以看到,我們成功得到了隨機(jī) UA。

怎么用代碼搞定Scrapy隨機(jī) User-Agent

▌一行代碼設(shè)置 UA

可以看到,上面幾種方法其實都不太方便,代碼量也比較多,有沒有更簡單的設(shè)置方法呢?

有的,只需要一行代碼就搞定,利用一款名為  scrapy-fake-useragent 的包。

先貼一下該包的官方網(wǎng)址:https://pypi.org/project/scrapy-fake-useragent/,使用方法非常簡單,安裝好然后使用就行了。

執(zhí)行下面的命令進(jìn)行安裝,然后在 settings.py 中啟用隨機(jī) UA 設(shè)置命令就可以了,非常簡單省事。

1pip install scrapy-fake-useragent
1DOWNLOADER_MIDDLEWARES = {
2    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, # 關(guān)閉默認(rèn)方法
3    'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400, # 開啟
4}

我們輸出一下 UA 和網(wǎng)頁 Response,可以看到成功輸出了結(jié)果。

怎么用代碼搞定Scrapy隨機(jī) User-Agent

以上就是 Scrapy 中設(shè)置隨機(jī) UA 的幾種方法,推薦最后一種方法,即安裝 scrapy-fake-useragent 庫,然后在 settings 中添加下面這一行代碼即可:

1'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,

另外,反爬措施除了設(shè)置隨機(jī) UA 以外,還有一種非常重要的措施是設(shè)置隨機(jī) IP。

看完上述內(nèi)容,你們對怎么用代碼搞定Scrapy隨機(jī) User-Agent有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝大家的支持。

當(dāng)前名稱:怎么用代碼搞定Scrapy隨機(jī)User-Agent-創(chuàng)新互聯(lián)
文章來源:http://www.bm7419.com/article28/dpcgcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站改版、企業(yè)建站、商城網(wǎng)站、響應(yīng)式網(wǎng)站、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化