python爬取數(shù)據(jù)中的headers和代理IP問題分析
爬蟲主要爬取方式之一 聚焦爬蟲
也就是說,爬取某一個(gè)特定網(wǎng)站或者具有特定內(nèi)容的網(wǎng)站,而一般比較大的有價(jià)值的網(wǎng)站都會(huì)有反爬策略,其中常見的反爬策略是網(wǎng)站根據(jù)來訪者的身份判定是否予以放行。
對(duì)來訪者身份的判定一般基于headers里的user-Agent值,每一種瀏覽器訪問網(wǎng)站的user-Agent都是不同的,因此,爬蟲需要偽裝成瀏覽器,并且在爬取的過程中自動(dòng)切換偽裝,從而防止網(wǎng)站的封殺。
通過一些爬蟲庫調(diào)用隨機(jī)返回一個(gè)headers(User-Agent)
import requests
ua = UserAgent() # 實(shí)例化,需要聯(lián)網(wǎng)但是網(wǎng)站不太穩(wěn)定-可能耗時(shí)會(huì)長一些
print(ua.random) # 隨機(jī)產(chǎn)生
headers = {
'User-Agent': ua.random # 偽裝
}
# 請(qǐng)求
if __name__ == '__main__':
url = 'https://www.baidu.com/'
response = requests.get(url, headers=headers ,proxies={"http":"117.136.27.43"})
print(response.status_code)
還有就是訪問IP的判別,在進(jìn)行Python爬蟲程序開發(fā)時(shí),如果頻繁地訪問同一網(wǎng)站的情況下,網(wǎng)站服務(wù)器可能會(huì)把該IP地址列入黑名單,限制其訪問權(quán)限。此時(shí),使用IP代理技術(shù)可以有效避免這種限制,保證爬蟲程序的穩(wěn)定性。使用IP代理技術(shù)還有其他的優(yōu)點(diǎn),比如增強(qiáng)隱私保護(hù)、提高數(shù)據(jù)訪問速度、降低目標(biāo)網(wǎng)站的壓力等等。總之,IP代理技術(shù)已經(jīng)成為了Python爬蟲程序中不可或缺的一部分。
Python提供了豐富的第三方庫,可以幫助我們實(shí)現(xiàn)IP代理功能。其中最常用的是requests庫和urllib庫。以下是使用requests庫實(shí)現(xiàn)IP代理的示例代碼:
``` #! -*- encoding:utf-8 -*-
import requests
import random
# 要訪問的目標(biāo)頁面
targetUrl = "http://httpbin.org/ip"
# 要訪問的目標(biāo)HTTPS頁面
# targetUrl = "https://httpbin.org/ip"
# 代理服務(wù)器(產(chǎn)品官網(wǎng) www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理驗(yàn)證信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxyPort,
"user" : proxyUser,
"pass" : proxyPass,
}
# 設(shè)置 http和https訪問都是用HTTP代理
proxies = {
"http" : proxyMeta,
"https" : proxyMeta,
}
# 設(shè)置IP切換頭
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text以上就是python爬取數(shù)據(jù)中的headers和代理IP問題解析的詳細(xì)內(nèi)容,更多關(guān)于python爬取數(shù)據(jù)headers代理IP的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹
這篇文章主要介紹了Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09
踩坑:pytorch中eval模式下結(jié)果遠(yuǎn)差于train模式介紹
python調(diào)用c++ ctype list傳數(shù)組或者返回?cái)?shù)組的方法
Python實(shí)現(xiàn)備份文件實(shí)例
Python爬取科目四考試題庫的方法實(shí)現(xiàn)

