您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關利用代理IP怎么實現(xiàn)一個Python爬蟲,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
獲取 IP
代理池使用 Flask 提供了獲取的接口:http://localhost:5555/random
只要訪問這個接口再返回內(nèi)容就可以拿到 IP 了
Urllib
先看一下 Urllib 的代理設置方法:
from urllib.error import URLError import urllib.request from urllib.request import ProxyHandler, build_opener # 獲取IP ip_response = urllib.request.urlopen("http://localhost:5555/random") ip = ip_response.read().decode('utf-8') proxy_handler = ProxyHandler({ 'http': 'http://' + ip, 'https': 'https://' + ip }) opener = build_opener(proxy_handler) try: response = opener.open('http://httpbin.org/get') print(response.read().decode('utf-8')) except URLError as e: print(e.reason)
運行結果:
{ "args": {}, "headers": { "Accept-Encoding": "identity", "Host": "httpbin.org", "User-Agent": "Python-urllib/3.7" }, "origin": "108.61.201.231, 108.61.201.231", "url": "https://httpbin.org/get" }
Urllib 使用 ProxyHandler 設置代理,參數(shù)是字典類型,鍵名為協(xié)議類型,鍵值是代理,代理前面需要加上協(xié)議,即 http 或 https,當請求的鏈接是 http 協(xié)議的時候,它會調(diào)用 http 代理,當請求的鏈接是 https 協(xié)議的時候,它會調(diào)用https代理,所以此處生效的代理是:http://108.61.201.231 和 https://108.61.201.231
ProxyHandler 對象創(chuàng)建之后,再利用 build_opener() 方法傳入該對象來創(chuàng)建一個 Opener,這樣就相當于此 Opener 已經(jīng)設置好代理了,直接調(diào)用它的 open() 方法即可使用此代理訪問鏈接
Requests
Requests 的代理設置只需要傳入 proxies 參數(shù):
import requests # 獲取IP ip_response = requests.get("http://localhost:5555/random") ip = ip_response.text proxies = { 'http': 'http://' + ip, 'https': 'https://' + ip, } try: response = requests.get('http://httpbin.org/get', proxies=proxies) print(response.text) except requests.exceptions.ConnectionError as e: print('Error', e.args)
運行結果:
{ "args": {}, "headers": { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Host": "httpbin.org", "User-Agent": "python-requests/2.21.0" }, "origin": "47.90.28.54, 47.90.28.54", "url": "https://httpbin.org/get" }
Requests 只需要構造代理字典然后通過 proxies 參數(shù)即可設置代理,比較簡單
Selenium
import requests from selenium import webdriver import time # 借助requests庫獲取IP ip_response = requests.get("http://localhost:5555/random") ip = ip_response.text chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--proxy-server=http://' + ip) browser = webdriver.Chrome(chrome_options=chrome_options) browser.get('http://httpbin.org/get') time.sleep(5)
運行結果:
看完上述內(nèi)容,你們對利用代理IP怎么實現(xiàn)一個Python爬蟲有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。