python ip动态代理_Python 爬虫设置动态代理
爬蟲的時候,我們用同一個ip反復爬一個網站有可能會被封,這時候就需要使用到代理ip
網上有免費的開放代理,但有些代理ip穩定性差要經常更換且有些爬取后就不可用了還要再篩查
除了免費的外可以向代理供應商購買帶代理,它們提供有效代理,并有用戶名和密碼,和免費的相比多了一個認證
http://www.xicidaili.com/,這個網站列出了很多免費代理。我們以免費的代理為例,如何設置有用戶名和密碼的代理請查閱其它相關資料
接下來直接上完整代碼
# -*-coding:utf-8 -*-
import requests
import random
from bs4 import BeautifulSoup
class IP:
def __init__(self,headers):
self.headers=headers
def get_ip_list(self):
#獲取ip列表
print("正在獲取代理列表...")
url = 'http://www.xicidaili.com/nn/'
html = requests.get(url=url, headers=self.headers).text
soup = BeautifulSoup(html, 'lxml')
#BeautifulSoup最好這樣寫soup=BeautifulSoup(html,"lxml")
ips = soup.find(id='ip_list').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)
print("代理列表抓取成功.")
return ip_list
#返回ip地址和端口號組成的列表
def get_random_ip(self, ip_list):
#設置隨機ip
print("正在設置隨機代理...")
proxy_list = []
for ip in ip_list:
proxy_list.append('http://' + ip)
#把ip添加到proxy_list中
proxy_ip = random.choice(proxy_list)
#隨機選取出一個ip
proxies = {'http': proxy_ip}
print("代理設置成功.")
return proxies
def start(self):
#開始函數
ip=self.get_ip_list()
print self.get_random_ip(ip)
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/52.0.2743.116 Safari/537.36'}
#我們找到一個寫好的headers
ip=IP(headers)
#ip是IP類的一個對象實例
#初始化ip這個實例
ip.start()
我們運行程序,代理設置成功。
最后返回了一個list,是一個ip地址和端口號組成的列表
之后再根據具體情況來寫爬蟲
內容參考自:https://blog..net/JosephPai/article/details/78896613
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python ip动态代理_Python 爬虫设置动态代理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python检测文件夹中新增文件_pyt
- 下一篇: python字符串换行连接_零基础学py