有些大型的網站,都會有網頁爬蟲的偵測機制,像是請求的標頭、IP、規則性等等,一旦被偵測到就很有可能被封鎖,沒辦法再使用該網站的服務,導致很多人不敢輕易嘗試爬取大型網站的資料。那想要降低被偵測風險的方法之一,就是隨機輪換不同的Proxy IP和請求標頭,最近看到ScraperAPI提供了這樣的解決方案,使用上也非常的簡單,又有1000 API額度可以免費使用,所以這篇文章就來分享一下ScraperAPI的使用方式。
- ScraperAPI是什麼?
- Python網頁爬蟲串接ScraperAPI
- Python網頁爬蟲爬取網頁資料
一、ScraperAPI是什麼?
ScraperAPI是一個讓開發人員只要呼叫一次,即可取得目標網頁原始碼的API,透過它隨機輪換Proxy IP、瀏覽器標頭或CAPTCHA處理等,讓我們的Python網頁爬蟲不用擔心被網站偵測封鎖,可以順利取得目標網頁的原始碼。
那要使用ScraperAPI,就要先到它們的網站,點擊「START TRIAL」進行註冊,來取得API KEY,如下圖:
截取自ScraperAPI官網
二、Python網頁爬蟲串接ScraperAPI
註冊完成後,前往左側選單的API playground,如下圖:
截取自ScraperAPI官網
在下方就可以看到ScraperAPI的使用方式,這邊就用Python程式語言為例:
截取自ScraperAPI官網
其中,payload裡面的url參數,就是我們想要爬取的目標網頁網址。
接著,點擊程式碼右上角的「COPY TO CLIPBOARD」複製程式碼,貼到我們的Python網頁爬蟲專案中,並且引用BeautifulSoup模組,如下範例:
from bs4 import BeautifulSoup import requests payload = { 'api_key': '你的API KEY', 'url': '想爬取的目標網頁' } r = requests.get('https://api.scraperapi.com/', params=payload)
假設我們想要爬取INSIDE硬塞的網路趨勢觀察網站的AI文章標題,就要在payload的url參數中貼上它的網址,如下範例:
from bs4 import BeautifulSoup import requests payload = { 'api_key': '你的API KEY', 'url': 'https://www.inside.com.tw/tag/ai' } r = requests.get('https://api.scraperapi.com/', params=payload)
三、Python網頁爬蟲爬取網頁資料
由於ScraperAPI只會幫我們取得目標網頁的原始碼,接下來還是要自行實作爬取資料的動作。所以前往INSIDE硬塞的網路趨勢觀察網站的AI文章,如下圖:
回到Python網頁爬蟲專案,將ScraperAPI回傳的網頁原始碼傳入BeautifulSoup模組中,如下範例:
from bs4 import BeautifulSoup import requests payload = { 'api_key': '你的API KEY', 'url': 'https://www.inside.com.tw/tag/ai' } r = requests.get('https://api.scraperapi.com/', params=payload) soup = BeautifulSoup(r.text, 'lxml')
利用BeautifulSoup模組的find_all()方法,爬取網頁上所有的文章標題元素,如下範例:
from bs4 import BeautifulSoup import requests payload = { 'api_key': '你的API KEY', 'url': 'https://www.inside.com.tw/tag/ai' } r = requests.get('https://api.scraperapi.com/', params=payload) soup = BeautifulSoup(r.text, 'lxml') # 爬取網頁上的所有文章標題元素 titles = soup.find_all("h3", {'class': 'post_title'})
最後,用For迴圈來進行讀取,並且利用BeautifulSoup模組的getText()方法,爬取文章標題資料,如下範例:
from bs4 import BeautifulSoup import requests payload = { 'api_key': '你的API KEY', 'url': 'https://www.inside.com.tw/tag/ai' } r = requests.get('https://api.scraperapi.com/', params=payload) soup = BeautifulSoup(r.text, 'lxml') # 爬取網頁上的所有文章標題元素 titles = soup.find_all("h3", {'class': 'post_title'}) for title in titles: print(title.getText()) # 印出爬取到的文章標題文字
執行結果如下:
世界第一位 AI 軟體工程師「Devin」,能全自動完成複雜工程任務 Google 在台力推 Gemini 學院!第三條海底電纜也將完工啟用 黃仁勳:就算對手免費提供晶片,用 NVIDIA 還是更划算 Oracle 面對 AI 伺服器強勁需求,正在建可容納 8 台波音 747 的資料中心 Palantir 贏得美軍 1.78 億美元合約,打造戰地 AI 情報站「泰坦」 ...
四、小結
ScaperAPI提供了一個簡單的介面,讓我們在建置Python網頁爬蟲的時候,可以輕鬆避免被反爬蟲機制偵測的風險,順利爬取到更高價值的網頁資料來進行分析,對於想要爬取大型網站資料的人來說,是非常好上手的工具。
你可能有興趣的文章
![](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)
留言
張貼留言