python爬取數(shù)據(jù)中的headers和代理IP問(wèn)題分析
爬蟲(chóng)主要爬取方式之一 聚焦爬蟲(chóng)
也就是說(shuō),爬取某一個(gè)特定網(wǎng)站或者具有特定內(nèi)容的網(wǎng)站,而一般比較大的有價(jià)值的網(wǎng)站都會(huì)有反爬策略,其中常見(jiàn)的反爬策略是網(wǎng)站根據(jù)來(lái)訪者的身份判定是否予以放行。
對(duì)來(lái)訪者身份的判定一般基于headers里的user-Agent值,每一種瀏覽器訪問(wèn)網(wǎng)站的user-Agent都是不同的,因此,爬蟲(chóng)需要偽裝成瀏覽器,并且在爬取的過(guò)程中自動(dòng)切換偽裝,從而防止網(wǎng)站的封殺。
通過(guò)一些爬蟲(chóng)庫(kù)調(diào)用隨機(jī)返回一個(gè)headers(User-Agent)
import requests ua = UserAgent() # 實(shí)例化,需要聯(lián)網(wǎng)但是網(wǎng)站不太穩(wěn)定-可能耗時(shí)會(huì)長(zhǎng)一些 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) 還有就是訪問(wèn)IP的判別,在進(jìn)行Python爬蟲(chóng)程序開(kāi)發(fā)時(shí),如果頻繁地訪問(wèn)同一網(wǎng)站的情況下,網(wǎng)站服務(wù)器可能會(huì)把該IP地址列入黑名單,限制其訪問(wèn)權(quán)限。此時(shí),使用IP代理技術(shù)可以有效避免這種限制,保證爬蟲(chóng)程序的穩(wěn)定性。使用IP代理技術(shù)還有其他的優(yōu)點(diǎn),比如增強(qiáng)隱私保護(hù)、提高數(shù)據(jù)訪問(wèn)速度、降低目標(biāo)網(wǎng)站的壓力等等。總之,IP代理技術(shù)已經(jīng)成為了Python爬蟲(chóng)程序中不可或缺的一部分。 Python提供了豐富的第三方庫(kù),可以幫助我們實(shí)現(xiàn)IP代理功能。其中最常用的是requests庫(kù)和urllib庫(kù)。以下是使用requests庫(kù)實(shí)現(xiàn)IP代理的示例代碼: ``` #! -*- encoding:utf-8 -*- import requests import random # 要訪問(wèn)的目標(biāo)頁(yè)面 targetUrl = "http://httpbin.org/ip" # 要訪問(wèn)的目標(biāo)HTTPS頁(yè)面 # 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訪問(wèn)都是用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問(wèn)題解析的詳細(xì)內(nèi)容,更多關(guān)于python爬取數(shù)據(jù)headers代理IP的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Python爬蟲(chóng)實(shí)現(xiàn)爬取下載網(wǎng)站數(shù)據(jù)的幾種方法示例
- Python協(xié)程異步爬取數(shù)據(jù)(asyncio+aiohttp)實(shí)例
- python使用aiohttp通過(guò)設(shè)置代理爬取基金數(shù)據(jù)簡(jiǎn)單示例
- Python實(shí)戰(zhàn)使用Selenium爬取網(wǎng)頁(yè)數(shù)據(jù)
- python爬取B站關(guān)注列表及數(shù)據(jù)庫(kù)的設(shè)計(jì)與操作
- Python?Haul利器簡(jiǎn)化數(shù)據(jù)爬取任務(wù)提高開(kāi)發(fā)效率
相關(guān)文章
Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹
這篇文章主要介紹了Flask sqlalchemy一對(duì)多與多對(duì)一與一對(duì)一及多對(duì)多關(guān)系介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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爬取科目四考試題庫(kù)的方法實(shí)現(xiàn)