利用Python網頁爬蟲爬取網頁資料已經是常見的資料蒐集方法之一,但是在爬取的過程中,難免擔心會不會被網站偵測或封鎖,繼[Python爬蟲教學]有效利用Python網頁爬蟲爬取免費的Proxy IP清單文章之後,看完本篇文章,你將學會如何在Python網頁爬蟲專案,透過隨機使用不同的Proxy IP發送請求,降低被偵測或封鎖的機率。實作步驟包含:
- Python網頁爬蟲讀取Proxy IP清單
- Python網頁爬蟲使用Proxy IP
- Python網頁爬蟲隨機使用Proxy IP
一、Python網頁爬蟲讀取Proxy IP清單
在[Python爬蟲教學]有效利用Python網頁爬蟲爬取免費的Proxy IP清單文章中,假設爬到了幾組免費可用的Proxy IP,如下圖:
這時候,在Python網頁爬蟲專案,就可以讀取其中的Proxy IP,如下範例:
with open('proxy_list.txt', 'r') as file: proxy_ips = file.read().splitlines() print(proxy_ips)
執行結果
['93.158.214.162:3128', '121.244.147.137:8080', '103.124.2.229:3128']
二、Python網頁爬蟲使用Proxy IP
讀取到Proxy IP清單後,在Python網頁爬蟲專案中,就能夠透過迴圈,輪流使用其中的Proxy IP來發送請求,並且進行爬取資料的動作,如下範例:
import requests from bs4 import BeautifulSoup with open('proxy_list.txt', 'r') as file: proxy_ips = file.read().splitlines() for proxy_ip in proxy_ips: try: response = requests.get('https://www.inside.com.tw/', proxies={'http': f'{proxy_ip}', 'https': f'{proxy_ip}'}) # 爬取網頁熱門文章 soup = BeautifulSoup(response.content, 'lxml') title = soup.find('a', {'class': 'hero_menu_link'}).getText() except: print('爬蟲發生錯誤!')
以上Python網頁爬蟲輪流使用不同的Proxy IP,爬取INSIDE - 社群媒體、行動網路、行銷、技術、創業網站。
PS.大家在進行範例的測試時,Proxy IP有可能因為更新而失效,如果發生錯誤,建議可以重新選擇可用的Proxy IP。
三、Python網頁爬蟲隨機使用Proxy IP
而如果想要Python網頁爬蟲「隨機」使用Proxy IP來發送請求,該如何實作呢?
這時候,就需要引用Python內建的random模組(Module),如下範例第13行:
import requests from bs4 import BeautifulSoup import random with open('proxy_list.txt', 'r') as file: proxy_ips = file.read().splitlines() for index in range(5): # 設定爬取的次數 try: proxy_ip = random.choice(proxy_ips) # 隨機取得Proxy IP print(f'使用的Proxy IP:{proxy_ip}') response = requests.get('https://www.inside.com.tw/', proxies={'http': f'{proxy_ip}', 'https': f'{proxy_ip}'}) # 爬取網頁熱門文章 soup = BeautifulSoup(response.content, 'lxml') title = soup.find('a', {'class': 'hero_menu_link'}).getText() print(title) except: print('爬蟲發生錯誤!')
執行結果
四、小結
在開發Python網頁爬蟲專案的過程中,本文和大家分享了如何輪流(Rotate)或隨機(Random)使用y自己所蒐集到的不同Proxy IP,來降低被網站偵測或封鎖的機會,當然,免費的Proxy IP不會永久有效,所以建議還是需要不斷的更新Proxy IP清單,才能夠讓Python網頁爬蟲更加穩定。
不過也提醒大家在使用免費的Proxy IP開發Python網頁爬蟲時,避免爬取需登入帳號及密碼的網站,以防有資安相關的疑慮。
而想要入門Python網頁爬蟲的讀者們,除了本站的教學文章外,也可以參考Python 網頁爬蟲入門實戰課程唷。
如果您喜歡我的文章,別忘了在下面訂閱本網站,以及幫我按五下Like(使用Google或Facebook帳號免費註冊),支持我創作教學文章,回饋由LikeCoin基金會出資,完全不會花到錢,感謝大家。
- [Python爬蟲教學]有效利用Python網頁爬蟲爬取免費的Proxy IP清單
- [Python爬蟲教學]常見的Python網頁爬蟲自動化下載檔案資料方法
- [Python爬蟲教學]一學就會的Python網頁爬蟲動態讀取資料庫應用
- [Python爬蟲教學]Selenium動態網頁爬蟲通過Captcha驗證碼的實用技巧
- [Python爬蟲教學]Python網頁爬蟲動態翻頁的實作技巧
- [Python爬蟲教學]7個降低Python網頁爬蟲被偵測封鎖的實用方法
- 解析Python網頁爬蟲如何有效整合Pandas套件提升資料處理效率
- BeautifulSoup vs Selenium vs Scrapy三大Python網頁爬蟲實作工具的比較
- 必學的Python Selenium套件自動化網頁截圖技巧
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYqMPD_mPLEileg1IdrsIYhFSWZkYFKYmEnUqWqiqdiJv2XYnkT23CFcXoTN6HBtGCEUylgVoUIVKm6KPRPM_TjcjsSei4lGE_YmZdrWA6Ulw1fp6-o8Cn-bVwr7_FANFoC4tjTe-ak6w-atFYq-a1pipQbZvQzt4wHRNK7tywcSG0dSCnpJpqoMP5wA/s1600/Python%E7%B6%B2%E9%A0%81%E7%88%AC%E8%9F%B2%E5%85%8D%E8%B2%BB%E7%B7%9A%E4%B8%8A%E5%9F%B9%E8%A8%93.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-fK9Da5M7X1lSpbZVan4Eo-PunVnQv-YHw3EDahTUhZr5FayVLaCPqrW44W3_xwQQO-gAWZEwe_A-SxL_nltT__ArbFOgLYAAIsi3RzETT9GqVsfyfN9PXDs-xGTkxZSqj_W1SCxwD2UcrJLqHZSYIrLB-HIU75vSom4YoqoWFUQz_o4PbnvTQUbE6Bab/w640-h426/2.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg61JC7N1hyphenhyphenPpzb1hNJauunevoWrOsJxk_Upz0ywnLtIAJ2rdd1ZxChyphenhyphenFPq8GHYfywtHv2mTce5NGdwwxWFWYARhA6In0xlOzkwlRb9kM04mwgdy9Un9JgVCoLQnwV25oUcitQy2OY4TeA3gVIs067wR4StGfkldbykOeL3TfPchWfNClWKhL10ZzWaxFtf/w640-h426/3.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgh1XFQE0AmkZHSFB0Icq3uY4_FdsIYZ9nUqllOlo9ulRu0ri-LS1OeW2ybKOO2QRg-gyUOUr_3sMLYf7S4Q5ULZpIcXsS1pAkSMPm0OwqpbnLET51WEpQ3EoY5WaEVEWyTixBkRqp2tA7SpePM_MCIY6tnyUvu917rulqbLJTEEPsEho6Q-4Tf74DFdakd/w640-h426/4.png)
留言
張貼留言