python代理ip的方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網站制作、做網站、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的硯山網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
使用到的庫
from bs4 import BeautifulSoup import random import urllib.request
下面是對該網站的簡單解析提取HTTP的高匿IP
使用BeautifulSoup進行網頁解析
def get_proxy_list(): target = 'http://www.xicidaili.com/nn/' + str(random.randint(0, 100)) try: opener = urllib.request.build_opener() #header可以選自己瀏覽器的 #樣例:[('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64) ''AppleWebKit/537.36 (KHTML,like Gecko)Chrome/56.0.2924.87 Safari/537.36')] opener.addheaders = self.headers urllib.request.install_opener(opener) html = urllib.request.urlopen(target).read().decode('utf-8') tr = BeautifulSoup(html, 'lxml').find_all('tr') p = re.compile('<[^>]+>') for tag in tr: td_list = tag.find_all('td') if len(td_list) > 0: if str(td_list[5]) == '<td>HTTP</td>': #將爬到的代理IP存到列表里面 self.proxy_list.append(p.sub('', str(td_list[1])) + ':' + p.sub('', str(td_list[2]))) except Exception as b: self.logger.exception(b)
接下來就是代理IP的使用
使用的是urllib這個庫,到了python3以后這個庫可以進行的操作比之前更多,也可以進行一些復雜連接的模擬了。
def init_urllib(): #這個函數用來初始化urllib的參數 length = len(self.proxy_list) if length == 0: get_proxy_list() #隨機得到一個IP ip = random.choice(self.proxy_list) self.proxy_list.remove(ip) proxy = {'http': ip} proxy_support = urllib.request.ProxyHandler(proxy) #加載代理 opener = urllib.request.build_opener(proxy_support) opener.addheaders = self.headers #初始化urllib urllib.request.install_opener(opener) def connect(uri): html = '' flag = 20 while flag > 0: try: html = urllib.request.urlopen(uri).read().decode('utf-8') break except Exception as b: #這里可以將異常細化,由于是簡單實現就不做具體實現了 self.logger.exception(b) #實現更換IP重新請求 flag -= 1 init_urllib() return BeautifulSoup( html, 'lxml')
感謝各位的閱讀!看完上述內容,你們對python代理ip的方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創新互聯行業資訊頻道。
當前名稱:python代理ip的方法
本文URL:http://vcdvsql.cn/article18/gjijgp.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、網站營銷、Google、品牌網站建設、網站維護、企業網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯