PyQt5 实现百度搜索工具:完整代码解析
使用 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 时做了以下更改:
- 引入了
from PyQt5.QtWidgets模块来使用 PyQt5 库提供的 GUI 部件和布局管理器。 - 使用了
QLabel、QLineEdit、QPushButton和QVBoxLayout等 Qt 部件替代了原来的tkinter部件。 - 将
result_text部件从Text更改为QLabel,并使用setOpenExternalLinks(True)启用了超链接功能。 - 将
open_url函数修改为不接受参数,而是直接从sender属性获取 URL。 - 在
search函数中使用result_text.clear()清空结果文本。 - 使用
app.exec_()启动 PyQt5 应用程序。
请确保在运行替换后的代码之前,你已经安装了 PyQt5 库。
原文地址: https://www.cveoy.top/t/topic/pRv 著作权归作者所有。请勿转载和采集!