CodeGym /Java Adesua /Python SELF TW /用於 Web 抓取的 API 工作

用於 Web 抓取的 API 工作

Python SELF TW
等級 34 , 課堂 2
開放

1. API 簡介

API,或者 Application Programming Interface(應用程式介面),是一組規則和機制, 用於應用程式和元件之間的互動。把 API 想像成餐廳的服務生。你(程式)下單(請求),服務生(API)把它轉給廚房(伺服器),然後回傳一道菜給你(回應)。對於 Web 抓取來說,API 允許你直接從伺服器獲取資料,而無需解析 HTML 程式碼。

API 與 HTML 抓取

當我們使用如 BeautifulSoup 的工具進行 Web 抓取時,我們會遇到一些挑戰: 解析 HTML 結構,尋找需要的元素及其屬性。而使用 API 一切就簡單多了:你可以直接獲取結構化的數據(通常是 JSON 格式),不需要去理解 HTML 標籤的迷宮。這就像不用拼裝積木,而是直接拿到說明書和現成零件。

API 的優勢:

  • 結構化資料:大多數 API 以結構化形式返回資料(例如 JSON),這讓處理起來更加方便。
  • 穩定性:API 的端點比起 Web 頁面的 HTML 程式碼更少改變。
  • 效率:通過 API 獲取資料通常更快並且資源消耗更少。
  • 繞過限制:許多網站限制其資料被抓取,但提供通過 API 的訪問。

API 的不足:

  • 訪問限制:訪問 API 可能需要註冊,有時甚至需要付費。
  • 請求速度和數量限制:API 常常限制單位時間內的請求數量。
  • 需要學習文件:為了有效使用 API,需要花時間閱讀其文檔。

2. 實際應用 API

設定與基本請求

為了與 API 一起工作,我們將使用你可能已經熟悉的 requests 庫。我們來寫一個簡單的應用程式,從流行的 OpenWeather API 中獲取天氣資料(因為程式設計不僅僅是 0 和 1,還包括雨天和晴天)。

Python
import requests

# 替換 'your_api_key' 為你的 API 密鑰
api_key = 'your_api_key'
city = 'Moscow'
url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

response = requests.get(url)
# 驗證請求是否成功
if response.status_code == 200:
    data = response.json()
    print(f"{city} 的溫度: {data['main']['temp']}K")
else:
    print("獲取天氣資料時發生錯誤")

數據分析與處理

JSON 就像 CSV,更加酷炫!JSON 的結構像 Python 裡的字典和列表,因此處理資料幾乎是直覺的。在上面的例子中,我們通過指定資料路徑 (data['main']['temp']) 就輕鬆提取了溫度。

真實案例:使用 API 進行業務流程

在現實生活中,API 可以極大地簡化你的生活。假設你正在開發一個新聞顯示服務。與其抓取數十個網站,不如使用新聞機構提供的 API,它們會以易處理的形式提供最新的文章。或者,如果你想要在網站中集成支付功能,支付系統(比如 PayPal 或 Stripe)的 API 就能輕鬆幫你搞定。

3. 使用開放 API 的示例

示例:使用 NewsAPI

讓我們構建一個簡單的工具來獲取最新新聞。

Python
import requests

api_key = 'your_news_api_key'
url = f'https://newsapi.org/v2/top-headlines?country=us&apiKey={api_key}'

response = requests.get(url)
if response.status_code == 200:
    articles = response.json().get('articles', [])
    for article in articles:
        print(f"標題: {article['title']}")
        print(f"描述: {article['description']}")
else:
    print("獲取新聞資料時發生錯誤")

通過 API 接收資料後的分析

API 的作用不僅僅是資料共享,還包括進行分析。例如,通過交易所的 API,你可以獲取貨幣和股票的資料,用來分析市場或者製作預測。

4. 使用 API 的策略

瀏覽文檔

文檔是處理 API 時你最好的朋友。它描述了所有可用端點、請求的參數、返回資料的格式以及限制。多花點時間閱讀文檔是一項很有價值的投資。

身份驗證與授權

大多數 API 需要驗證你才能使用。通常通過 API 密鑰或者 token 進行驗證。如果 API 密鑰過期或者未提供,你將收到錯誤。請確保你的密鑰存放在安全的地方,不會暴露到公開的倉庫。

請求限制與回應處理

API 經常對請求數量進行限制。例如,免費版本可能每天僅允許 100 次請求。在這種情況下,優化請求並處理達到限制的情況就很重要。你可以通過設置超時或者在請求之間添加延遲來解決。

5. 與 API 連結生成報告

現在,我們對 API 的工作原理有了一定的認識,讓我們實現一個小型項目。假設我們正在開發一個收集天氣資料並生成報告的應用程式。

Python
import requests
import pandas as pd
from datetime import datetime

api_key = 'your_api_key'
cities = ['Moscow', 'New York', 'London']
weather_data = []

for city in cities:
    url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        weather_data.append({
            'City': city,
            'Temperature': data['main']['temp'],
            'Humidity': data['main']['humidity'],
            'Description': data['weather'][0]['description'],
            'Timestamp': datetime.now()
        })
    else:
        print(f"獲取 {city} 的天氣資料時發生錯誤")

# 將資料轉換為 DataFrame
df = pd.DataFrame(weather_data)

# 將資料保存為 Excel 文件
df.to_excel('weather_report.xlsx', index=False)

通過這個腳本,我們請求多個城市的天氣資料,將它們收集起來並保存為 Excel 報告。 這是一個簡單但功能強大的示例,展示如何使用 API 构建自动化的数据收集系统。

對我們來說,API 就像通往龐大資料世界的魔法鑰匙,通常在普通的 HTML 頁面中無法訪問。它們讓我們可以交換資訊、創建強大的應用程式並節省時間。 善用它們,讓你的項目煥發新的生機吧!

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION