webscrapping / app.py
simran40's picture
Update app.py
fd7d179 verified
import gradio as gr
from scraper import scrape_blog # Your scraper function
# Function to scrape multiple tags
def scrape(url, tags):
if not url:
return "⚠️ Please enter a valid URL"
tags_list = [t.strip() for t in tags.split(",") if t.strip()]
all_data = []
for tag in tags_list:
data = scrape_blog(url, tag)
if data:
all_data.append(f"Results for <{tag}>:\n" + "\n".join(data))
return "\n\n".join(all_data) if all_data else "No data found!"
# Function to set tag from button
def set_tag(tag):
return tag
# Gradio Blocks with glass effect
with gr.Blocks(css="""
body {
background: linear-gradient(135deg, #89f7fe, #66a6ff);
font-family: Arial, sans-serif;
}
h1 {
color: #fff;
text-align: center;
text-shadow: 1px 1px 8px rgba(0,0,0,0.3);
}
.glass-card {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(20px);
border-radius: 25px;
padding: 25px;
margin: 15px 0;
box-shadow: 0 8px 32px rgba(31, 38, 135, 0.37);
border: 1px solid rgba(255,255,255,0.18);
}
.gr-button {
background: rgba(255, 255, 255, 0.3) !important;
color: #000 !important;
font-weight: bold;
border-radius: 12px !important;
margin: 5px;
transition: 0.3s;
}
.gr-button:hover {
background: rgba(255, 255, 255, 0.6) !important;
color: #222 !important;
transform: scale(1.05);
}
.output-box {
max-height: 400px;
overflow-y: auto;
white-space: pre-wrap;
}
""") as demo:
gr.HTML("<h1>✨ Interactive Blog Scraper ✨</h1>")
with gr.Row():
with gr.Column():
gr.HTML('<div class="glass-card">')
url_input = gr.Textbox(label="Enter Blog URL", placeholder="https://example.com")
tag_input = gr.Textbox(label="Selected HTML Tag(s)", value="h2")
with gr.Row():
h1_btn = gr.Button("h1")
h2_btn = gr.Button("h2")
h3_btn = gr.Button("h3")
all_btn = gr.Button("h1,h2,h3")
scrape_btn = gr.Button("Scrape Blog")
gr.HTML('</div>')
with gr.Column():
gr.HTML('<div class="glass-card output-box">')
output = gr.Textbox(label="Scraped Titles", interactive=False)
copy_btn = gr.Button("Copy to Clipboard")
gr.HTML('</div>')
# Button actions to set tag
h1_btn.click(set_tag, inputs=[], outputs=tag_input, args=["h1"])
h2_btn.click(set_tag, inputs=[], outputs=tag_input, args=["h2"])
h3_btn.click(set_tag, inputs=[], outputs=tag_input, args=["h3"])
all_btn.click(set_tag, inputs=[], outputs=tag_input, args=["h1,h2,h3"])
# Scrape button click
scrape_btn.click(scrape, inputs=[url_input, tag_input], outputs=output)
# Copy to clipboard
copy_btn.click(lambda x: x, inputs=output, outputs=None)
# Launch app
demo.launch(server_name="0.0.0.0", server_port=5000)