利用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套件自動化網頁截圖技巧
留言
張貼留言