python爬蟲設置代理ip池

2020-10-09 青燈教育Python學院

在使用python爬蟲的時候,經常會遇見所要爬取的網站採取了反爬取技術,高強度、高效率地爬取網頁信息常常會給網站伺服器帶來巨大壓力,所以同一個IP反覆爬取同一個網頁,就很可能被封,那如何解決呢?使用代理ip,設置代理ip池。

私信小編01即可獲取大量Python學習資料

以下介紹的免費獲取代理ip池的方法:


優點:


1.免費


缺點:


1.代理ip穩定性差需要經常更換


2.爬取後ip存在很多不可用ip需要定期篩選


小建議:


該方法比較適合學習使用,如果做項目研究的話建議參考本人博客《python爬蟲設置代理ip池——方法(二)》,購買穩定的代理ip


"""


一.主要思路


1.從代理ip網站爬取IP位址及埠號並儲存


2.驗證ip是否能用


3.格式化ip地址


4.在requests中使用代理ip爬取網站


二. 寫在前面


在Requests中使用代理爬取的格式是
import requests
requests.get(url, headers=headers,proxies=proxies)
其中proxies是一個字典其格式為:
對每個ip都有
proxies = {
http: 'http://114.99.7.122:8752'
https: 'https://114.99.7.122:8752'
}
注意:
對於http和https兩個元素,這裡的http和https
代表的不是代理網站上在ip後面接的類型
代表的是requests訪問的網站的傳輸類型是http還是https

你爬的網站是http類型的你就用http,如果是https類型的你就用https,在代理網站上爬的時候也要分別爬http或https的ip


三.代碼

1.配置環境,導入包

# IP位址取自國內髙匿代理IP網站:http://www.xicidaili.com/nn/# 僅僅爬取首頁IP位址就足夠一般使用from bs4 import BeautifulSoupimport requestsimport random

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}

2.獲取網頁內容函數

def getHTMLText(url,proxies):try:r = requests.get(url,proxies=proxies)r.raise_for_status()r.encoding = r.apparent_encodingexcept:return 0else:return r.text


3.從代理ip網站獲取代理ip列表函數,並檢測可用性,返回ip列表

def get_ip_list(url):web_data = requests.get(url,headers)soup = BeautifulSoup(web_data.text, 'html')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)#檢測ip可用性,移除不可用ip:(這裡其實總會出問題,你移除的ip可能只是暫時不能用,剩下的ip使用一次後可能之後也未必能用)for ip in ip_list:try:proxy_host = "https://" + ipproxy_temp = {"https": proxy_host}res = urllib.urlopen(url, proxies=proxy_temp).read()except Exception as e:ip_list.remove(ip)continuereturn ip_list

4.從ip池中隨機獲取ip列表

def 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 proxies

5.調用代理

if __name__ == '__main__':url = 'http://www.xicidaili.com/nn/'ip_list = get_ip_list(url)proxies = get_random_ip(ip_list)print(proxies

相關焦點

  • Python製作爬蟲代理IP設置方法
    :# 利用DesiredCapabilities(代理設置)參數值,重新打開一個sessionId.>四、爬蟲框架scrapy設置代理:在setting.py中添加代理IPPROXIES = ['http://173.207.95.27:8080', 'http://111.8.100.99:8080', 'http://126.75.99.113:8080','http://68.146.165.226:3128']
  • 爬蟲代理IP選擇蘋果IP
    python利用代理ip爬蟲的時候遇到了「HTTP Error 403: Forbidden」的提醒,是哪裡出現了錯誤?我們先來看看會有哪些場景是會出現這樣的錯誤代碼的。爬蟲代理IP選擇蘋果IP1、網站禁止特定的用戶訪問所有內容,例:網站屏蔽某個ip訪問。
  • 認識學習爬蟲python的熱潮以及代理IP的應用
    python語言近期很火熱,不少人都想要學習一個新的附加技能,選擇python語言培訓課程似乎是不錯的選擇,而且python還能夠幫助我們完成很多事情,例如網絡爬蟲。網絡爬蟲就是其中之一,而我們都知道,代理IP對網絡爬蟲相當重要,並且有十分巨大的幫助。  網絡爬蟲是一種程序,主要用於搜尋引擎,它可以閱讀一個網站的所有內容與連結,並建立相關的全文索引到資料庫中。當人們在搜尋引擎查詢關鍵字時,通過對比資料庫內容,找出最符合用戶需求的信息。由於爬蟲抓取信息會給伺服器帶來巨大的壓力,因此很多網站有採取了反爬機制,這也就是為什麼當用戶抓取信息時IP會被封。
  • 自建爬蟲代理ip池,破解網站封ip的講解
    1.今天我們來說下一個特別有效的東西,代理ip池,結論便是一個任務間隔一定時間去到目標ip代理提供網站去爬取能用數據存到mysql資料庫,而且檢測資料庫現有數據是否能用,不可用就刪除。2.編寫提取代理ip到資料庫的爬蟲2.1準備mysql表2.2創建爬蟲工程,編寫items.py(對應資料庫的欄位)2.3編寫settings.py2.4編寫spider
  • Python——網絡爬蟲、登錄、代理設置
    (url重寫技術:將sessionid拼接到url裡)二、代理設置在我們爬取網絡上的數據時,經常會遇到一些網站採取了防爬取技術,或是因為自己採集網站信息的強度和採集速度太大,給對方伺服器帶去了更多的壓力。
  • 爬蟲用的好,代理少不了,IP 代理科普
    代理IP就是讓你換一副外貌去抓兔子(把你的IP換成代理IP),抓完以後又換一套外貌去抓(又換一個),這樣他們還抓不到你(逍遙法外~)。  在網絡爬蟲抓取信息的過程中,如果抓取頻率高過了網站的設置閥值,將會被禁止訪問。通常,網站的反爬蟲機制都是依據IP來標識爬蟲的。於是在爬蟲的開發者通常需要採取兩種手段來解決這個問題:1、放慢抓取速度,減小對於目標網站造成的壓力。
  • 什麼是python爬蟲和代理IP?
    爬蟲的基本原理是基於網站網絡協議,根據網址批量獲取到網頁上的信息操作過程。簡單一點說就是用電腦程式來模擬人工點擊網頁獲取數據的過程。IP我們都不陌生,一臺電腦通常只有一個公網IP來確定電腦的位置。代理IP即代理伺服器(Proxy Server)是一種重要的安全功能,它的工作主要在開放系統互連(OSI)模型的對話層,從而起到防火牆的作用。
  • python 爬蟲一招解決SSl 報錯SSLError
    摘要用python寫爬蟲的時候沒我們經常遇到https認證的網站,採用常用模塊requests模塊,我們一般在請求中將verify設置成假,免證書驗證,但是這些都是理想狀態,https請求很容易報錯,一旦報錯就難以解決。
  • Python爬蟲第一課:requests的使用
    IP的分類根據代理ip的匿名程度,代理IP可以分為下面四類:透明代理(Transparent Proxy):透明代理雖然可以直接「隱藏」你的IP位址,但是還是可以查到你是誰。2.6 代理IP使用的注意點1、反反爬使用代理ip是非常必要的一種 反反爬 的方式
  • 代理ip池有多重要?
    為了能夠抓取大量的數據信息,網絡技術人員需要多種的深入分析,至此爬蟲技術也變得越來越重視。這就需要通過使用代理IP來突破單個IP限制,進行數據大規模的採集。代理ip池有多重要?IP代理可以隱藏真實的IP位址。
  • 還在使用動態轉發(隧道代理)嗎?快來了解一下線程IP池吧!
    一、本地轉發,效率更高,價格更便宜相比傳統友商的位於伺服器端的動態轉發,線程IP池設計的本地動態轉發機制更科學更高效。線程IP池的流量傳輸效率幾乎僅受限於您的本地網絡,而傳統友商的轉發產品需要您與它的其他所有客戶擁堵在同一臺遠程伺服器上,容易受到伺服器的並發瓶頸、帶寬瓶頸、CPU瓶頸、內存瓶頸、IO讀寫瓶頸等影響,從而影響您的爬蟲性能。
  • 爬蟲基礎面試題(Python篇)
    在實際的數據採集過程中,既考慮網速和響應的問題,也需要考慮自身機器的硬體情況,來設置多進程或多線程7:常見的反爬蟲和應對方法? 1. 基於用戶行為,同一個ip段時間多次訪問同一頁面 利用代理ip,構建ip池 2.
  • 為什麼爬蟲只能用高匿的代理ip?
    從事過信息採集的小夥伴們,都清楚地了解,想要獲取大量的數據採集分析,必然會使用網絡爬蟲工具進行信息採集,除了會寫爬蟲代碼的技術工作者親自編輯爬蟲程序代碼進行信息爬取以外,大部分技術人員都會選擇現成的http代理ip爬蟲軟體。  如果會寫代碼的爬蟲採集工作者,相對那種現成的軟體更有效率,寫代碼的會根據目標網站量身制定代碼。
  • Python爬蟲:使用代理伺服器解決封IP
    封IP訪問網站頻率太高,被反爬蟲代理伺服器:本機客戶端和Web伺服器之間的橋梁,本機客戶端將請求發送給代理伺服器,代理伺服器再把請求轉發給Web伺服器。代理的作用:突破自身IP訪問的限制、可以隱藏自身真實的IP。
  • 高質量代理ip在哪兒買?
    我們再利用網絡爬蟲開展數據採集的情況下,在爬取頻率過高、頻次過多的情況下,會碰到IP被反爬程序封禁的狀況,這個情況下就必須要使用代理IP了。高質量代理ip在哪兒買?代理ip的獲取方法有那麼幾種,下面為大家一一舉例下來。
  • Python代理是怎樣使用代理避開反爬蟲限制的?
    使用爬蟲不可避免的就會遇到網站的各種封ip操作,因此就需要我們找尋代理,通過代理進行操作,屏蔽自己真實ip。PS:如有需要Python學習資料的小夥伴可以加點擊下方連結自行獲取python免費學習資料以及群交流解答後臺私信小編01即可import requestsimport pymongofrom lxml.html import
  • python爬取高匿代理IP(再也不用擔心會進小黑屋了)
    ,對於反爬蟲都做了一定的限制,這個如果寫過一些爬蟲程序的小夥伴應該都深有體會,其實主要還是IP進了小黑屋了,那麼為了安全,就不能使用自己的實際IP去爬取人家網站了,這個時候,就需要採用代理IP去做這些事情……為什麼要用高匿代理我們可以對比不同類型的代理的區別,根據代理的匿名程度,代理可以分為如下類別:
  • python爬蟲——urllib使用代理
    本文中的知識點:1.get請求2.使用代理3.post請求安裝urllib是python自帶的,不用安裝,直接import進來即可代碼樣例注意這裡需要先定義opener,在打開我們要發送的request請求。
  • 如何使用動態撥號VPS讓爬蟲軟體破解IP限制
    隨著大數據技術的日新月異發展,自動化程度爬蟲技術大大提高了工作效率,但python爬蟲會遇到ip限制的問題,很多場景需要用到不同的IP位址才能工作,這個使用IP代理,或者是動態IP雲主機,也就是撥號vps就就可以解決這個問題。
  • 爬蟲為什麼要使用代理ip
    對於很多網際網路工作者來說,爬蟲早已變成獲取數據的不可或缺的方式,但是在使用爬蟲頻繁爬取相同網站時,時常會被網站的IP反爬蟲機制給禁掉,為了更好地解決封禁IP的問題,一般會使用以下兩種方式:爬蟲為什麼要使用代理ip1、放慢爬取速度,減少對於目標網站引起的壓力,但會減少單位時間類的爬取量。