Spaces:
Sleeping
Sleeping
File size: 906 Bytes
043a6d8 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | # search.py (modify to accept logger)
import httpx
from selectolax.parser import HTMLParser
async def duckduckgo_search(query, max_results=5, logger=None):
url = f"https://html.duckduckgo.com/html/?q={query}"
headers = {"User-Agent": "Mozilla/5.0"}
async with httpx.AsyncClient() as client:
response = await client.get(url, headers=headers, timeout=10)
html = HTMLParser(response.text)
results = []
for result in html.css("div.result")[:max_results]:
title_el = result.css_first("a.result__a")
snippet_el = result.css_first(".result__snippet")
if title_el and snippet_el:
title = title_el.text(strip=True)
link = title_el.attributes.get("href", "")
snippet = snippet_el.text(strip=True)
results.append({"title": title, "link": link, "snippet": snippet})
return results
|