querysurvey / app.py
adpro's picture
Update app.py
b77d858 verified
import requests
import gradio as gr
from bs4 import BeautifulSoup
from rich import print
from urllib.parse import urlparse
import re
from googlesearch import search
from urllib.parse import parse_qs
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.chrome.options import Options
opt = Options()
opt.add_argument('--headless')
driver = webdriver.Chrome(options=opt)
def google_search_with_time_filter(query, start_date, end_date):
# Mở trang Google
driver.get("https://www.google.com")
# Tìm thanh tìm kiếm và nhập từ khóa
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys(query)
search_box.send_keys(Keys.RETURN)
# Nhấn vào nút "Công cụ"
tools_button = driver.find_element(By.XPATH, "//div[@aria-label='Công cụ']")
tools_button.click()
# Nhấn vào nút "Bất kỳ lúc nào"
any_time_button = driver.find_element(By.XPATH, "//div[text()='Bất kỳ lúc nào']")
any_time_button.click()
# Chọn phạm vi thời gian
custom_range_button = driver.find_element(By.XPATH, "//li//span[text()='Phạm vi tùy chỉnh']")
custom_range_button.click()
# Nhập ngày bắt đầu và ngày kết thúc
start_date_input = driver.find_element(By.XPATH, "//input[@aria-label='Ngày bắt đầu']")
end_date_input = driver.find_element(By.XPATH, "//input[@aria-label='Ngày kết thúc']")
start_date_input.send_keys(start_date)
end_date_input.send_keys(end_date)
end_date_input.send_keys(Keys.RETURN)
# Đợi trang tải kết quả
time.sleep(2)
# Lấy các kết quả
results = driver.find_elements(By.CLASS_NAME, "tF2Cxc")
# Hiển thị kết quả
for result in results[:5]: # Lấy 5 kết quả đầu tiên
title = result.find_element(By.TAG_NAME, "h3").text
link = result.find_element(By.TAG_NAME, "a").get_attribute("href")
print(f"Title: {title}")
print(f"Link: {link}")
print('-' * 80)
# Thực hiện tìm kiếm với bộ lọc thời gian
google_search_with_time_filter("Python programming", "01/01/2023", "12/31/2023")
# Đóng trình duyệt sau khi hoàn tất
driver.quit()
def run_lora(prompt,site,start,end):
url = ("https://www.google.com/search?q=inurl:" +site + " " +prompt + "&tbs=cdr%3A1%2Ccd_min%3A"+start+"%2Ccd_max%3A" + end)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content)
# Tìm tất cả các liên kết trong kết quả tìm kiếm
results = soup.find_all('a')
print(results)
mLink=""
# Lọc và hiển thị các liên kết
for link in soup.find_all("a",href=re.compile("(?<=/url\?q=)(htt.*://.*)")):
print (re.split(":(?=http)",link["href"].replace("/url?q=","")))
mLink+=str(re.split(":(?=http)",link["href"].replace("/url?q=","").replace("'","")))
# Lọc theo ngày tháng (nếu ngày tháng được cung cấp trong kết quả)
date_elements = soup.find_all('span', class_='f')
for date_elem in date_elements:
date_text = date_elem.text
try:
# Kiểm tra định dạng ngày tháng và so sánh
date = datetime.strptime(date_text, '%m-%d-%Y') # Ví dụ: '23 August 2024'
if start <= date.strftime('%m-%d-%Y') <= end:
print(f"Date: {date_text}")
except ValueError:
# Bỏ qua các định dạng ngày tháng không thể phân tích
pass
def extract_href(href):
url = urlparse(href)
query = parse_qs(url.query)
if not ('q' in query and query['q'] and len(query['q']) > 0):
return None
return query['q'][0]
def make_url(query,start,end):
return f"https://www.google.com/search?q={query}&rlz=1C1CHBF_enUS1024US1025&biw=1564&bih=932&sxsrf=ALiCzsaGPneyPAo-kyllnxBBtXe-FGWorQ%3A1665448856808&source=lnt&tbs=sbd%3A1%2Ccdr%3A1%2Ccd_min%3A{start}%2Ccd_max%3A{end}&tbm=nws"
with gr.Blocks() as app:
gr.HTML("""<html>
<head>
<style>
h1 {
text-align: center;
}
</style>
</head>
<body>
<h1>Get survey</h1>
</body>
</html>""")
with gr.Row():
with gr.Column():
input_textbox = gr.Textbox(lines=5, placeholder="Enter key", label="Input Text")
input_sitebox = gr.Textbox(lines=5, placeholder="Enter site", label="Site Text")
start = gr.Textbox(lines=5, placeholder="Enter start", label="Enter start")
end = gr.Textbox(lines=5, placeholder="Enter End", label="Enter End")
with gr.Column():
translated_textbox = gr.Textbox(lines=5, placeholder="", label="Result Text")
info_label = gr.HTML("")
btn = gr.Button("GetNow")
btn.click(google_search_with_time_filter, inputs=["site:" + input_sitebox +" " + input_textbox,start,end],outputs=[translated_textbox])
app.queue()
app.launch()