Python 百度搜索爬虫工具 - 使用 Requests 和 BeautifulSoup 获取搜索结果
Python 百度搜索爬虫工具
本工具使用 Python 开发,利用 Requests 和 BeautifulSoup 库抓取百度搜索结果,并将其展示在 Tkinter 界面。用户可以输入关键词进行搜索,并直接点击搜索结果中的链接进行访问。
代码:
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 = int(result_text.index(tk.CURRENT).split('.')[0])
tag_ranges = result_text.tag_ranges('link')
for tag_range in tag_ranges:
start_index = int(str(tag_range[0]).split('.')[0])
end_index = int(str(tag_range[1]).split('.')[0])
if index in range(start_index, end_index):
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('<Button-1>', open_url)
window.mainloop()
功能:
- 输入关键词搜索: 在输入框中输入关键词,点击“搜索”按钮,程序会抓取百度搜索结果并展示在下方文本区域。
- 点击链接访问: 文本区域中的搜索结果链接以蓝色下划线显示,用户可直接点击链接访问对应页面。
使用说明:
- 确保已安装
requests,BeautifulSoup和tkinter库。 - 运行代码,输入关键词并进行搜索。
注意:
- 本工具仅用于学习和研究目的,请勿用于任何违反法律法规的行为。
- 百度搜索结果页面结构可能发生变化,需要根据实际情况修改代码以确保程序正常运行。
- 由于网络波动等原因,程序可能无法正常获取搜索结果。
- 请勿频繁访问,以免给服务器造成过大压力。
原文地址: https://www.cveoy.top/t/topic/ruY 著作权归作者所有。请勿转载和采集!