序言
我們在進行請求的時候,一般會設置虛擬的UserAgent,但是每次手動去設置很麻煩,而且同一個UserAgent訪問次數多了,也很容易被屏蔽,所有我們需要大量的UserAent去供我們發起請求。
fake-useragent
這個庫包含了大量的UserAgent可以隨意進行替換
安裝fake-useragent
因為fake-useragent是一個python庫,所以我們直接使用pip安裝就可以了。
pip install fake-useragent
下面是一個簡單獲取不同瀏覽器UserAgent的例子
>>> import fake_useragent
>>> userAgent=fake_useragent.UserAgent()
>>> for i in range(5):
... print(userAgent.random)
...
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36
Opera/9.80 (Windows NT 5.2; U; ru) Presto/2.7.62 Version/11.01
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1500.55 Safari/537.36
Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36
這樣每次就可以隨機用不同的UserAgent去訪問網站,你的請求也沒那么容易被屏蔽了
獲取UA
獲取隨機UserAgent
>>> import fake_useragent
>>> userAgent=fake_useragent.UserAgent()
>>> print(userAgent.random)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36
如果你要設置成某個瀏覽器的UserAgent也是可以的
獲取Chrome 的UA
>>> import fake_useragent
>>> userAgent=fake_useragent.UserAgent()
>>> print(userAgent.chrome)
Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36
獲取Firefox 的UA
>>> import fake_useragent
>>> userAgent=fake_useragent.UserAgent()
>>> print(userAgent.firefox)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10; rv:33.0) Gecko/20100101 Firefox/33.0
在Scrapy中實現隨機UserAgent
方法1:直接在程序中添加UserAgent
# -*- coding: utf-8 -*-
import scrapy
from fake_useragent import UserAgent
class ExampleSpider(scrapy.Spider):
name = 'example'
header={'User-Agent':UserAgent().random}
def start_requests(self):
url='http://example.com'
yield scrapy.Request(url,headers=self.header)
def parse(self, response):
print(response.request.headers['User-Agent'])
方法2:在middlewares中添加UserAgent
- 在process_request()方法里面,添加一個中間件
def process_request(self, request, spider):
from fake_useragent import UserAgent
ua = UserAgent()
request.headers['User-Agent'] = ua.random
- 在settings文件里面默認的UserAgent關閉掉
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
'dome1.middlewares.Dome1DownloaderMiddleware': 543,
}
第一次運行
第二次運行
可以看到兩次運行的UserAgent都是不一樣的,表示我們的隨機UserAgent也是設置成功了
方法3:直接在sttings文件里面上設置UserAgent
把settings文件里面的默認UserAgent替換掉,替換成隨機的UserAgent
from fake_useragent import UserAgent
USER_AGENT=UserAgent().random
第一次運行
第二次運行
可以看到兩次的結果都是不一樣的,說明我的的隨機UserAgent已經是設置成功了呢
以上就是Scrapy設置代理IP的過程,以上教程如果覺得對你有幫助的話,請點擊一下推薦讓更多的人看到!