Mayur-cinderace's picture
Add streaming
e2b2661
import os
import requests
import pandas as pd
from dotenv import load_dotenv
# Load .env
load_dotenv()
key = os.getenv("NEWSAPI_KEY")
if not key:
raise SystemExit("Set NEWSAPI_KEY in env or .env")
# Fetch news data
url = "https://newsapi.org/v2/everything"
params = {
"q": "stock market",
"language": "en",
"pageSize": 100,
}
headers = {"Authorization": key}
resp = requests.get(url, params=params, headers=headers)
resp.raise_for_status()
data = resp.json()
articles = data.get("articles", [])
print(f"Fetched {len(articles)} articles")
# Convert to DataFrame
if articles:
df = pd.DataFrame(articles)
# Select useful fields
df = df[["source", "author", "title", "description", "url", "publishedAt", "content"]]
# Flatten nested 'source' dicts
df["source"] = df["source"].apply(lambda s: s.get("name") if isinstance(s, dict) else s)
# Save to CSV
df.to_csv("news_articles_1.csv", index=False, encoding="utf-8")
print("✅ Saved to news_articles_1.csv")
else:
print("⚠️ No articles found.")