Python爬蟲(chóng)設(shè)置代理IP的方法(爬蟲(chóng)技巧)
在學(xué)習(xí)Python爬蟲(chóng)的時(shí)候,經(jīng)常會(huì)遇見(jiàn)所要爬取的網(wǎng)站采取了反爬取技術(shù),高強(qiáng)度、高效率地爬取網(wǎng)頁(yè)信息常常會(huì)給網(wǎng)站服務(wù)器帶來(lái)巨大壓力,所以同一個(gè)IP反復(fù)爬取同一個(gè)網(wǎng)頁(yè),就很可能被封,這里講述一個(gè)爬蟲(chóng)技巧,設(shè)置代理IP。
(一)配置環(huán)境
- 安裝requests庫(kù)
- 安裝bs4庫(kù)
- 安裝lxml庫(kù)
(二)代碼展示
# IP地址取自國(guó)內(nèi)髙匿代理IP網(wǎng)站:http://www.xicidaili.com/nn/
# 僅僅爬取首頁(yè)IP地址就足夠一般使用
from bs4 import BeautifulSoup
import requests
import random
def get_ip_list(url, headers):
web_data = requests.get(url, headers=headers)
soup = BeautifulSoup(web_data.text, 'lxml')
ips = soup.find_all('tr')
ip_list = []
for i in range(1, len(ips)):
ip_info = ips[i]
tds = ip_info.find_all('td')
ip_list.append(tds[1].text + ':' + tds[2].text)
return ip_list
def get_random_ip(ip_list):
proxy_list = []
for ip in ip_list:
proxy_list.append('http://' + ip)
proxy_ip = random.choice(proxy_list)
proxies = {'http': proxy_ip}
return proxies
if __name__ == '__main__':
url = 'http://www.xicidaili.com/nn/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
ip_list = get_ip_list(url, headers=headers)
proxies = get_random_ip(ip_list)
print(proxies)函數(shù)get_ip_list(url, headers)傳入url和headers,最后返回一個(gè)IP列表,列表的元素類似42.84.226.65:8888格式,這個(gè)列表包括國(guó)內(nèi)髙匿代理IP網(wǎng)站首頁(yè)所有IP地址和端口。
函數(shù)get_random_ip(ip_list)傳入第一個(gè)函數(shù)得到的列表,返回一個(gè)隨機(jī)的proxies,這個(gè)proxies可以傳入到requests的get方法中,這樣就可以做到每次運(yùn)行都使用不同的IP訪問(wèn)被爬取的網(wǎng)站,有效地避免了真實(shí)IP被封的風(fēng)險(xiǎn)。proxies的格式是一個(gè)字典:{‘http': ‘http://42.84.226.65:8888‘}。
(三)代理IP的使用
運(yùn)行上面的代碼會(huì)得到一個(gè)隨機(jī)的proxies,把它直接傳入requests的get方法中即可。
web_data = requests.get(url, headers=headers, proxies=proxies)
總結(jié)
以上所述是小編給大家介紹的Python爬蟲(chóng)設(shè)置代理IP的方法(爬蟲(chóng)技巧),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
使用python本地部署DeepSeek運(yùn)行時(shí)報(bào)錯(cuò)?OSError:?[WinError?193]?%1?不是
文章介紹了在本地使用Python部署DeepSeek時(shí)遇到的OSError:?[WinError?193]?錯(cuò)誤,通過(guò)檢查錯(cuò)誤信息,發(fā)現(xiàn)與numpy版本有關(guān),解決方法是卸載并重新安裝numpy,最終,問(wèn)題得到解決,感興趣的朋友跟隨小編一起看看吧2025-02-02
基于Python實(shí)現(xiàn)圖片一鍵切割九宮格的工具
有時(shí)候發(fā)微博時(shí)候,需要裁切圖片為九宮格,但是ps或者其他工具都太麻煩。本文就來(lái)用Python編寫(xiě)一個(gè)一鍵切割九宮格的工具,希望對(duì)大家有所幫助2023-03-03
淺析Python數(shù)字類型和字符串類型的內(nèi)置方法
這篇文章主要介紹了Python數(shù)字類型和字符串類型的內(nèi)置方法,本文通過(guò)實(shí)例代碼講解的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
pandas實(shí)現(xiàn)按照Series分組示例
本文主要介紹了pandas按照Series分組示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
Python實(shí)現(xiàn)的個(gè)人所得稅計(jì)算器示例
這篇文章主要介紹了Python實(shí)現(xiàn)的個(gè)人所得稅計(jì)算器,涉及Python條件判斷與數(shù)值運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Python實(shí)現(xiàn)身份證前六位地區(qū)碼對(duì)照表文件
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)身份證前六位地區(qū)碼對(duì)照表文件,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-12-12

