Python Tkinter实现可点击链接的百度搜索结果
Python Tkinter实现可点击链接的百度搜索结果
这是一个使用Python Tkinter库创建的简单百度搜索界面,该界面可以显示搜索结果,并且只有链接部分可以点击跳转到对应网页。pythonimport requestsfrom bs4 import BeautifulSoupimport timeimport tkinter as tkimport 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(event): index = result_text.index(tk.CURRENT) for tag_range in result_text.tag_ranges('link'): if result_text.compare(tag_range[0], '<=', index) and result_text.compare(index, '<', tag_range[1]): 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()
result_text = tk.Text(window)result_text.pack()
result_text.bind('
window.mainloop()
代码说明:
- 使用
requests库获取百度搜索结果页面的HTML代码。2. 使用BeautifulSoup库解析HTML代码,提取搜索结果的链接地址。3. 使用tkinter库创建图形界面,包括输入框、按钮和文本框。4. 使用webbrowser库打开链接地址。5. 使用tag_ranges()方法获取链接部分的范围,并使用bind()方法绑定点击事件,只有点击链接部分才会打开浏览器。
使用方法:
- 运行代码,会弹出一个窗口。2. 在输入框中输入关键词,点击“搜索”按钮。3. 搜索结果会显示在文本框中,只有链接部分可以点击。4. 点击链接部分,会使用默认浏览器打开链接地址。
原文地址: https://www.cveoy.top/t/topic/ozX 著作权归作者所有。请勿转载和采集!