URL_Scraper / app.py
Pavan178's picture
Update app.py
4b109de verified
import csv
import gradio as gr
from duckduckgo_search import DDGS
def search_duckduckgo(query: str, max_results: int = 1000):
results = []
with DDGS() as ddgs:
for r in ddgs.text(query, max_results=max_results):
results.append(r['href'])
return results
def save_urls_to_csv(urls, filename="duckduckgo_search_urls.csv"):
with open(filename, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(["URL"])
for url in urls:
writer.writerow([url])
return filename
def search_and_save(query, max_results):
urls = search_duckduckgo(query, max_results)
csv_file = save_urls_to_csv(urls)
return urls, csv_file
with gr.Blocks() as demo:
gr.Markdown("## πŸ” DuckDuckGo Search Interface")
with gr.Row():
query_input = gr.Textbox(label="Search Query", placeholder="Enter your search query here")
max_results_input = gr.Slider(minimum=1, maximum=100, value=10, step=1, label="Max Results")
search_button = gr.Button("Search")
results_output = gr.Dataframe(headers=["URL"], label="Search Results")
download_output = gr.File(label="Download CSV")
def on_search_click(query, max_results):
urls, csv_file = search_and_save(query, max_results)
return [urls], csv_file
search_button.click(
fn=on_search_click,
inputs=[query_input, max_results_input],
outputs=[results_output, download_output]
)
demo.launch()