国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python爬蟲常用小技巧之設置代理IP

2020-02-15 22:57:59
字體:
來源:轉載
供稿:網友

設置代理IP的原因

我們在使用Python爬蟲爬取一個網站時,通常會頻繁訪問該網站。假如一個網站它會檢測某一段時間某個IP的訪問次數,如果訪問次數過多,它會禁止你的訪問。所以你可以設置一些代理服務器來幫助你做工作,每隔一段時間換一個代理,這樣便不會出現因為頻繁訪問而導致禁止訪問的現象。

我們在學習Python爬蟲的時候,也經常會遇見所要爬取的網站采取了反爬取技術導致爬取失敗。高強度、高效率地爬取網頁信息常常會給網站服務器帶來巨大壓力,所以同一個IP反復爬取同一個網頁,就很可能被封,所以下面這篇文章講述一個爬蟲技巧,設置代理IP

這里介紹一下免費獲取代理IP的方法,這個方法的優點就是免費,但是缺點就是爬取后存在很多不能用的

IP地址取自國內髙匿代理IP網站,西刺代理,我們爬取首頁IP地址就足夠一般使用,或者你也可以爬取第一頁,第二頁…的

配置環境

安裝requests庫 安裝bs4庫 安裝lxml庫

具體代碼

話不多說直接上代碼吧

from bs4 import BeautifulSoupimport requestsimport randomdef 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_listdef 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 proxiesif __name__ == '__main__': url = 'http://www.xicidaili.com/nn/' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17' } ip_list = get_ip_list(url, headers=headers) proxies = get_random_ip(ip_list) print(proxies)

函數get_ip_list(url, headers)傳入url和headers,最后返回一個IP列表,列表的元素類似122.114.31.177:808格式,這個列表包括國內髙匿代理IP網站首頁所有IP地址和端口

函數get_random_ip(ip_list)傳入第一個函數得到的列表,返回一個隨機的proxies,這個proxies可以傳入到requests的get方法中,這樣就可以做到每次運行都使用不同的IP訪問被爬取的網站,有效地避免了真實IP被封的風險

proxies的格式是一個字典: {‘http': ‘http://122.114.31.177:808‘} ,可以將下面的執行也封裝為方法

對于抓取IP這個,西刺代理的服務器做了反爬處理,如果你頻繁去抓取的話,服務器會主動返回503錯誤,提示block,所以在請求的時候可以先一次請求完保存一個文件,來讀取這個文件,或者爬取一個ip使用幾分鐘后,再去爬取一次,相當于加一個定時功能

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 舟山市| 新乡市| 嵊泗县| 万源市| 班玛县| 天全县| 邮箱| 刚察县| 五莲县| 咸阳市| 灵璧县| 久治县| 鹤峰县| 舒城县| 苗栗市| 长岛县| 厦门市| 泽州县| 三亚市| 灌南县| 云南省| 龙口市| 开阳县| 元氏县| 赣榆县| 盐山县| 扬中市| 鹤岗市| 桂林市| 蓬溪县| 新邵县| 德保县| 红安县| 罗源县| 微博| 连云港市| 昆明市| 通化市| 双柏县| 南川市| 布拖县|