因為爬蟲的需要畦贸,所以需要多個user-agent握爷,之前一直也是這樣用的姑曙,后來接觸到了fake_useragent這個包后奴饮,一切都變得那么簡單簡單了纬向,fake_useragent是一個集成了市面上大部分的user-agent,可以指定瀏覽器戴卜,也可隨機(jī)生成任意一個
在工作中進(jìn)行爬蟲時逾条,經(jīng)常會需要提供User-Agent,如果不提供User-Agent叉瘩,會導(dǎo)致爬蟲在請求網(wǎng)頁時膳帕,請求失敗,所以需要大量User-Agent。如何生成合法的User-Agent危彩?
使用fake-useragent庫就可以解決該問題攒磨。
安裝:pip install fake-useragent? ? ? ?模塊下載
這里簡單做個生成指定瀏覽器的請求頭
from fake_useragent import UserAgent? ? ? # fake_useragent模塊 user-agent的獲取
ua = UserAgent()??? ? ? # 實例化,實例化時需要聯(lián)網(wǎng)但是網(wǎng)站不太穩(wěn)定
print(ua.ie)? ? ? # 隨機(jī)打印一個 ie 瀏覽器的頭
print(ua.opera)
print(ua.chrome)
print(ua.google)
print(ua.firefox)
print(ua.safari)
print(ua.random)? ? ? # 隨機(jī)打印 User-Agent
而在工作中常用的則是ua.random
我是這樣來使用的
from fake_useragent import UserAgent
import requests
ua = UserAgent()
headers = {
? ? 'User-Agent': ua.random
}
url = 'https://www.baidu.com/'
response = requests.get(url, headers=headers)
print(response.status_code)
》》》 200
?url定義要爬取網(wǎng)址汤徽,然后headers是user-agent娩缰,cook是cookie,cookie就是你登錄一個網(wǎng)頁時提交的密碼谒府,密碼向網(wǎng)頁提交的登陸數(shù)據(jù)拼坎,簡單來說,cookie就是制作一個假身份騙過海關(guān)完疫。?利用get函數(shù)提交url泰鸡、cookies和headers,然后接下來就可以肆無忌憚爬取你想要的數(shù)據(jù)了壳鹤。
??????當(dāng)然網(wǎng)站會有很多的反爬機(jī)制盛龄,需要隨機(jī)應(yīng)變,至于為什么要使用我寫的這個辦法爬取網(wǎng)站芳誓,是因為很多網(wǎng)站都會對Headers的User-Agent進(jìn)行檢測余舶,還有一部分網(wǎng)站會對Referer進(jìn)行檢測(一些資源網(wǎng)站的防盜鏈就是檢測Referer)。如果遇到了這類反爬蟲機(jī)制锹淌,可以直接在爬蟲中添加Headers匿值,將瀏覽器的User-Agent復(fù)制到爬蟲的Headers中;或者將Referer值修改為目標(biāo)網(wǎng)站域名赂摆。對于檢測Headers的反爬蟲挟憔,在爬蟲中修改或者添加Headers就能很好的繞過。