Python打造可视化百度搜索工具

想不想拥有一个自己编写的百度搜索工具?本文将带你使用Python结合Tkinter库,一步步打造一个具备图形界面的简易百度搜索工具。

代码实现

以下是完整的Python代码,其中包含了爬取百度搜索结果、构建界面以及处理用户交互等功能:

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

def crawl_baidu(keyword):
    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'
    }
    url = f'https://www.baidu.com/s?wd={keyword}'
    time.sleep(0.5)  # 添加延迟
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

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

    return results

def open_url(event):
    index = result_text.index(tk.CURRENT)
    tag_ranges = result_text.tag_ranges('link')
    for tag_range in tag_ranges:
        if int(result_text.index(tk.CURRENT).split('.')[0]) in range(int(str(tag_range[0]).split('.')[0]), int(str(tag_range[1]).split('.')[0])):
            url = result_text.get(tag_range[0], tag_range[1])
            if url:
                webbrowser.open(url)
            break

def search():
    keyword = entry.get()
    search_results = crawl_baidu(keyword)
    if len(search_results) > 0:
        for index, url in enumerate(search_results, start=1):
            result_text.insert(tk.END, f'{index}. {url}
', 'link')
            result_text.tag_configure('link', foreground='blue', underline=True)
            result_text.tag_add('link', f'{index}.0', f'{index}.end')
        result_text.insert(tk.END, '
')
    else:
        result_text.insert(tk.END, '没有搜索结果
')

# 创建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)

result_text.bind('<Button-1>', open_url)

window.mainloop()

代码解析

  1. 导入库: 导入必要的库,包括 requests 用于发送HTTP请求,BeautifulSoup 用于解析HTML,time 用于设置延迟,tkinter 用于创建图形界面,webbrowser 用于打开网页。
  2. crawl_baidu 函数: 该函数负责爬取百度搜索结果。它接收一个关键词作为参数,构造百度搜索URL,发送请求并解析HTML,提取搜索结果链接并返回。
  3. open_url 函数: 该函数用于处理用户点击搜索结果链接的事件,使用 webbrowser 模块打开相应的链接。
  4. search 函数: 该函数处理用户点击“搜索”按钮的事件,获取用户输入的关键词,调用 crawl_baidu 函数获取搜索结果,并将结果显示在文本框中,同时为链接添加点击事件。
  5. 创建UI界面: 使用 tkinter 库创建主窗口、标签、输入框、按钮、文本框和滚动条等界面元素,并进行布局和配置。

总结

通过以上步骤,我们就完成了一个简单的可视化百度搜索工具。你可以根据自己的需求,对代码进行修改和扩展,例如添加更多功能、优化界面等,打造一个更强大的搜索工具。

Python打造可视化百度搜索工具

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

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