最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲使用代理IP的實現(xiàn)

 更新時間:2019年10月27日 16:32:47   作者:Steven·簡談  
這篇文章主要介紹了Python爬蟲使用代理IP的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

使用爬蟲時,如果目標網(wǎng)站對訪問的速度或次數(shù)要求較高,那么你的 IP 就很容易被封掉,也就意味著在一段時間內(nèi)無法再進行下一步的工作。這時候代理 IP 能夠給我們帶來很大的便利,不管網(wǎng)站怎么封,只要能找到一個新的代理 IP 就可以繼續(xù)進行下一步的研究。

目前很多網(wǎng)站都提供了一些免費的代理 IP 供我們使用,當然付費的會更好用一點。本文除了展示怎樣使用代理 IP,也正好體驗一下前面文章中搭建的代理 IP 池,不知道的可以點擊這里:Python搭建代理IP池(一)- 獲取 IP。只要訪問代理池提供的接口就可以獲取到代理 IP 了,接下來就看怎樣使用吧!

測試的網(wǎng)址是:http://httpbin.org/get,訪問該站點可以得到請求的一些相關(guān)信息,其中 origin 字段就是客戶端的 IP,根據(jù)它來判斷代理是否設(shè)置成功,也就是是否成功偽裝了IP

獲取 IP

代理池使用 Flask 提供了獲取的接口:http://localhost:5555/random

只要訪問這個接口再返回內(nèi)容就可以拿到 IP 了

Urllib

先看一下 Urllib 的代理設(shè)置方法:

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)

運行結(jié)果:

{
 "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è)置代理,參數(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)設(shè)置好代理了,直接調(diào)用它的 open() 方法即可使用此代理訪問鏈接

Requests

Requests 的代理設(shè)置只需要傳入 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)

運行結(jié)果:

{
 "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 只需要構(gòu)造代理字典然后通過 proxies 參數(shù)即可設(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)

運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用urllib模塊的urlopen超時問題解決方法

    Python使用urllib模塊的urlopen超時問題解決方法

    這篇文章主要介紹了Python使用urllib模塊的urlopen超時問題解決方法,本文使用socket模塊中的setdefaulttimeout函數(shù)解決了超時問題,需要的朋友可以參考下
    2014-11-11
  • Python解析json代碼實例解析

    Python解析json代碼實例解析

    這篇文章主要介紹了Python解析json代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python中用psycopg2模塊操作PostgreSQL方法

    Python中用psycopg2模塊操作PostgreSQL方法

    python可以操作多種數(shù)據(jù)庫,本篇文章給大家介紹了用psycopg2模塊操作PostgreSQL方法,一起來學(xué)習(xí)下。
    2017-11-11
  • NumPy 數(shù)學(xué)函數(shù)及代數(shù)運算的實現(xiàn)代碼

    NumPy 數(shù)學(xué)函數(shù)及代數(shù)運算的實現(xiàn)代碼

    這篇文章主要介紹了NumPy 數(shù)學(xué)函數(shù)及代數(shù)運算的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 關(guān)于numpy版本兼容問題解決方案

    關(guān)于numpy版本兼容問題解決方案

    這篇文章主要給大家介紹了關(guān)于numpy版本兼容問題解決方案的相關(guān)資料,文中通過圖文介紹的非常詳細,對大家學(xué)習(xí)或者使用numpy具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • Python實現(xiàn)從URL地址提取文件名的方法

    Python實現(xiàn)從URL地址提取文件名的方法

    這篇文章主要介紹了Python實現(xiàn)從URL地址提取文件名的方法,涉及OS模塊中basename方法的使用技巧,需要的朋友可以參考下
    2015-05-05
  • python基礎(chǔ)之錯誤和異常處理

    python基礎(chǔ)之錯誤和異常處理

    這篇文章主要介紹了python錯誤和異常處理,實例分析了Python中返回一個返回值與多個返回值的方法,需要的朋友可以參考下
    2021-10-10
  • python連接access數(shù)據(jù)庫兩種方式總結(jié)

    python連接access數(shù)據(jù)庫兩種方式總結(jié)

    這篇文章主要介紹了python連接access數(shù)據(jù)庫兩種方式的相關(guān)資料,SQLAlchemy使用access方言進行連接,而pyodbc則通過pyodbc模塊實現(xiàn)連接,文章還提供了連接代碼示例,需要的朋友可以參考下
    2025-02-02
  • Python異常處理之常見異常類型絕佳實踐詳解

    Python異常處理之常見異常類型絕佳實踐詳解

    這篇文章主要為大家介紹了Python異常處理之常見異常類型絕佳實踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Python實現(xiàn)對二維碼數(shù)據(jù)進行壓縮

    Python實現(xiàn)對二維碼數(shù)據(jù)進行壓縮

    當前二維碼的應(yīng)用越來越廣泛,包括疫情時期的健康碼也是應(yīng)用二維碼的典型案例。本文的目標很明確,就是使用python,實現(xiàn)一張二維碼顯示更多信息,代碼簡單實用,感興趣的可以了解一下
    2023-02-02

最新評論

雅江县| 中牟县| 松原市| 鞍山市| 郴州市| 剑川县| 宜丰县| 桂平市| 静宁县| 磐安县| 襄樊市| 黎川县| 洪雅县| 汨罗市| 孟津县| 奉化市| 大丰市| 承德市| 祁连县| 皋兰县| 治多县| 西宁市| 邹平县| 灵石县| 吴忠市| 绵竹市| 牡丹江市| 安远县| 镇江市| 鄯善县| 荥阳市| 奎屯市| 广丰县| 合作市| 六盘水市| 克东县| 尼玛县| 淮安市| 美姑县| 韩城市| 彰化县|