您好,登錄后才能下訂單哦!
我們都知道在采集數據過程中,尤其是爬取大量數據的時候,很多網站都有反爬蟲措施,封 ip是很嚴重的,,讓你在采集的時候很心煩。本文就如何解決這個問題總結出一些應對措施,這些措施可以單獨使用,也可以同時使用,效果更好。
一 、偽造 User-Agent
在請求頭中把 User-Agent 設置成瀏覽器中的 User-Agent ,來偽造瀏覽器訪問。比如:
headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
resp = requests.get(url,headers = headers)
在每次重復爬取之間設置一個隨機時間間隔
# 比如:
time.sleep(random.randint(0,3)) # 暫停 0~3 秒的整數秒,時間區間: [0,3]
# 或:
time.sleep(random.random()) # 暫停 0~1 秒,時間區間: [0,1)
而且最主要的是 ua 要越多越好,不要固定的使用那幾個,要經常更換最新真實的 ua 。
二、 偽造 cookies
若從瀏覽器中可以正常訪問一個頁面,則可以將瀏覽器中的 cookies 復制過來使用,比如:
cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')
resp = requests.get(url,cookies = cookies)
# 把瀏覽器的 cookies 字符串轉成字典
def cookies2dict(cookies):
items = cookies.split(';')
d = {}
for item in items:
kv = item.split('=',1)
k = kv[0]
v = kv[1]
d[k] = v
return d
注:用瀏覽器 cookies 發起請求后,如果請求頻率過于頻繁仍會被封 IP ,這時可以在瀏覽器上進行相應的手工驗證(比如點擊驗證圖片等),然后就可以繼續正常使用該 cookies 發起請求。
三、 使用代理
可以換著用多個代理 IP 來進行訪問,防止同一個 IP 發起過多請求而被封 IP ,比如:
# 要訪問的目標頁面
targetUrl = "http://httpbin.org/ip"
# 要訪問的目標HTTPS頁面
# targetUrl = "https://httpbin.org/ip"
# 代理服務器
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理隧道驗證信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http:// %(user)s : %(pass)s @ %(host)s : %(port)s " % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 設置 http和https訪問都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
} (這里是用的億牛云的動態轉發代理進行示例)
不管我們采集什么網站的數據,光有代理是不行的,要配合多種反爬策略一起才能更高效的獲取大量的數據。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。