News API. 試著收集新聞
收集 9/18-9/19 新聞
由於每次只能收 100篇, 本次測試的 keyword為'科技 OR 經濟 OR 國際新聞 OR 利率 OR 半導體'
Code
import requests
import pandas as pd
from google.colab import drive
import os
# 掛載 Google Drive
drive.mount('/content/drive')
# NewsAPI 設定
api_key = '1c1198c3cd574fce8ed37bbe5627e90300000000000' # 替換為你的 API 密鑰
output_folder = '/content/drive/My Drive/NewsAPI/' # 設定儲存的目標資料夾
query = '科技 OR 經濟 OR 國際新聞 OR 利率 OR 半導體' # 搜尋關鍵字
language = 'zh' # 設定語言為中文
page_size = 100 # 每次最多請求100篇
sort_by = 'relevancy' # 根據相關性排序
from_date = '2024-09-18' # 搜尋的起始日期
to_date = '2024-09-19' # 搜尋的結束日期
# 構建 NewsAPI 請求 URL
url = ('https://newsapi.org/v2/everything?'
f'q={query}&'
f'language={language}&'
f'from={from_date}&'
f'to={to_date}&'
f'sortBy={sort_by}&'
f'pageSize={page_size}&'
f'apiKey={api_key}')
# 發送請求
response = requests.get(url)
# 檢查請求是否成功
if response.status_code == 200:
data = response.json()
# 解析新聞數據
articles = data['articles']
# 創建 DataFrame 並提取所需的字段
df = pd.DataFrame(articles)
df = df[['source', 'author', 'title', 'description', 'url', 'publishedAt']]
# 儲存到 CSV
if not os.path.exists(output_folder):
os.makedirs(output_folder)
output_path = os.path.join(output_folder, 'news_2024_09_18_to_2024_09_19.csv')
df.to_csv(output_path, index=False, encoding='utf-8-sig') # 使用 utf-8-sig 編碼避免中文亂碼
print(f"新聞數據已成功保存到: {output_path}")
else:
print(f"請求失敗,狀態碼: {response.status_code}")
![](https://thepearl.ghost.io/content/images/2024/09/---2024-09-23-09.13.22.png)