|
|
import requests |
|
|
import pandas as pd |
|
|
import time |
|
|
import os |
|
|
|
|
|
|
|
|
API_KEY = os.getenv("SERPAPI_API_KEY", "") |
|
|
|
|
|
|
|
|
if not API_KEY: |
|
|
raise ValueError("API key is missing. Please set the SERPAPI_API_KEY environment variable.") |
|
|
|
|
|
def get_collaboration_data(competitors, target="Virgin Media"): |
|
|
results = [] |
|
|
|
|
|
|
|
|
for comp in competitors: |
|
|
query = f"{comp} {target} partnership OR collaboration" |
|
|
params = { |
|
|
"q": query, |
|
|
"api_key": API_KEY, |
|
|
"engine": "google", |
|
|
"num": 5 |
|
|
} |
|
|
|
|
|
print(f"Searching: {query}") |
|
|
try: |
|
|
|
|
|
response = requests.get("https://serpapi.com/search", params=params) |
|
|
response.raise_for_status() |
|
|
|
|
|
|
|
|
data = response.json() |
|
|
|
|
|
|
|
|
for item in data.get("organic_results", []): |
|
|
results.append({ |
|
|
"Competitor": comp, |
|
|
"Title": item.get("title", "No title available"), |
|
|
"Link": item.get("link", "No link available"), |
|
|
"Snippet": item.get("snippet", "No snippet available") |
|
|
}) |
|
|
except requests.exceptions.RequestException as e: |
|
|
print(f"Error fetching data for {comp}: {e}") |
|
|
except ValueError as e: |
|
|
print(f"Error parsing JSON response for {comp}: {e}") |
|
|
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
|
return pd.DataFrame(results) |
|
|
|