click / app.py
elasko-aim's picture
Create app.py
3d0bec1 verified
import gradio as gr
import requests
from bs4 import BeautifulSoup
def process_url(url, method):
try:
if method == "Обычный запрос":
response = requests.get(url)
elif method == "Через прокси":
proxies = {
"http": "http://your_proxy:port",
"https": "http://your_proxy:port"
}
response = requests.get(url, proxies=proxies)
elif method == "Только заголовки":
response = requests.head(url)
return f"Заголовки:\n{response.headers}"
response.raise_for_status()
if method != "Только заголовки":
soup = BeautifulSoup(response.content, 'html.parser')
page_title = soup.title.string if soup.title else "Нет заголовка"
page_preview = soup.prettify()[:500] # Ограничиваем вывод до 500 символов
return f"Заголовок страницы: {page_title}\n\nПредварительный просмотр кода:\n{page_preview}"
except requests.exceptions.RequestException as e:
return f"Ошибка при обработке URL: {e}"
# Создаем интерфейс
with gr.Blocks() as demo:
gr.Markdown("## Введите ссылку для просмотра исходного кода сайта")
url_input = gr.Textbox(label="Введите URL", placeholder="http://example.com")
method_selector = gr.Dropdown(choices=["Обычный запрос", "Через прокси", "Только заголовки"],
label="Метод обработки", value="Обычный запрос")
submit_button = gr.Button("Отправить")
output_text = gr.Textbox(label="Результат", lines=20)
# Обработка нажатия кнопки
submit_button.click(process_url, inputs=[url_input, method_selector], outputs=output_text)
# Запуск приложения
demo.launch(server_name="0.0.0.0", server_port=7860)