import requests
from bs4 import BeautifulSoup
import time
import tkinter as tk
import webbrowser
import random

def get_random_user_agent():
    user_agents = [
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36',
    ]
    return random.choice(user_agents)

def crawl_baidu(keyword):
    headers = {
        'User-Agent': get_random_user_agent()
    }
    url = f'https://www.baidu.com/s?wd={keyword}'

    # 添加随机延迟
    delay = random.uniform(0.5, 1.0)
    time.sleep(delay)

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

    results = []
    for result in soup.find_all('div', class_='result'):
        result_title = result.find('h3').get_text()
        result_url = result.find('a')['href']
        results.append((result_title, result_url))

    return results

def open_url(url):
    webbrowser.open(url)

def search():
    keyword = entry.get()
    search_results = crawl_baidu(keyword)
    if len(search_results) > 0:
        for index, (title, url) in enumerate(search_results, start=1):
            result_text.insert(tk.END, f'{index}. {title}\n', 'title')
            result_text.insert(tk.END, url, 'link')
            result_text.tag_configure('link', foreground='blue', underline=True)
            result_text.tag_bind('link', '<Button-1>', lambda event, url=url: open_url(url))
            result_text.insert(tk.END, '\n')
        result_text.insert(tk.END, '\n')
    else:
        result_text.insert(tk.END, '没有搜索结果\n')

# 创建UI界面
window = tk.Tk()
window.title('百度搜索')
window.geometry('800x600')

label = tk.Label(window, text='请输入关键词:')
label.pack()

entry = tk.Entry(window)
entry.pack()

search_button = tk.Button(window, text='搜索', command=search)
search_button.pack()

scrollbar = tk.Scrollbar(window)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

result_text = tk.Text(window, yscrollcommand=scrollbar.set)
result_text.pack(fill=tk.BOTH)

scrollbar.config(command=result_text.yview)

window.mainloop()
Python打造简易百度搜索工具

原文地址: https://www.cveoy.top/t/topic/s7q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录