使用 PyQt5 库替换时,你需要安装 PyQt5 库。下面是使用 PyQt5 实现的完整代码:

import sys
from PyQt5.QtWidgets import QApplication, QLabel, QLineEdit, QPushButton, QVBoxLayout, QWidget
from bs4 import BeautifulSoup
import requests
import time
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(2)  # 添加延迟
    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():
    url = sender.property('url')
    if url:
        webbrowser.open(url)

def search():
    keyword = entry.text()
    search_results = crawl_baidu(keyword)
    result_text.clear()
    if len(search_results) > 0:
        for index, url in enumerate(search_results, start=1):
            result_text.append(f'{index}. <a href='{url}'>{url}</a>')
        result_text.append('\n')
    else:
        result_text.append('没有搜索结果\n')

app = QApplication(sys.argv)
window = QWidget()

layout = QVBoxLayout()
label = QLabel('请输入关键词:')
layout.addWidget(label)

entry = QLineEdit()
layout.addWidget(entry)

search_button = QPushButton('搜索')
search_button.clicked.connect(search)
layout.addWidget(search_button)

result_text = QLabel()
result_text.setOpenExternalLinks(True)
layout.addWidget(result_text)

window.setLayout(layout)
window.setWindowTitle('百度搜索')
window.show()

sys.exit(app.exec_())

该代码在使用 PyQt5 时做了以下更改:

  1. 引入了from PyQt5.QtWidgets模块来使用 PyQt5 库提供的 GUI 部件和布局管理器。
  2. 使用了QLabelQLineEditQPushButtonQVBoxLayout等 Qt 部件替代了原来的tkinter 部件。
  3. result_text部件从Text更改为QLabel,并使用setOpenExternalLinks(True)启用了超链接功能。
  4. open_url函数修改为不接受参数,而是直接从sender属性获取 URL。
  5. search函数中使用result_text.clear()清空结果文本。
  6. 使用app.exec_()启动 PyQt5 应用程序。

请确保在运行替换后的代码之前,你已经安装了 PyQt5 库。

PyQt5 实现百度搜索工具:完整代码解析

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

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