我一直在谷歌上搜索要使用的 API,但它们似乎都已弃用或不再使用。
还有其他方法可以进行搜索并获取结果吗?
我的目标是“重新创建”|| |盲目搜索 但我将使用一组预定义的术语来使用 python 进行搜索,而不是用户输入术语。 感谢您的任何输入!
Thanks for any input!
很遗憾,你不能直接使用 Google、Bing 或 Yahoo 的 API 来抓取搜索结果。这些搜索引擎过去提供的 API 要么已被弃用,要么对访问施加了严格的限制和费用。
然而,你可以使用其他的方法来实现类似“盲搜”的功能:
1. 使用
requests
库和网页解析库模拟搜索请求:
-
使用 Python 的
requests
库发送 HTTP 请求到搜索引擎的网站。 -
使用
BeautifulSoup
或lxml
等库解析返回的 HTML 页面,提取搜索结果链接和摘要。
代码示例 (使用 Google 搜索为例):
import requests
from bs4 import BeautifulSoup
def search_google(query):
url = f"https://www.google.com/search?q={query}"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
results = []
for g in soup.find_all('div', class_='tF2Cxc'):
link = g.find('a', href=True)['href']
title = g.find('h3').text
results.append({'title': title, 'link': link})
return results
# 测试
search_terms = ["python 教程", "机器学习 入门", "数据分析 工具"]
for term in search_terms:
results = search_google(term)
print(f"搜索词: {term}\n")
for i, result in enumerate(results[:3]): # 打印前三个结果
print(f"{i+1}. {result['title']}: {result['link']}\n")
注意事项:
- 你需要分析目标搜索引擎的 HTML 结构,找到包含搜索结果的元素,并编写相应的解析代码。
- 搜索引擎可能会改变页面结构,导致你的代码失效。
- 频繁发送请求可能会触发搜索引擎的反爬虫机制,导致你的 IP 被封禁。
2. 使用第三方搜索 API:
- 一些第三方服务提供搜索 API,例如 SerpApi, Apify 等。
- 这些服务通常需要付费使用,但可以提供更稳定可靠的结果,并简化你的开发过程。
3. 使用 Google Custom Search Engine (CSE):
- 你可以创建自定义搜索引擎,并使用 Google CSE API 来获取搜索结果。
- CSE 可以让你指定搜索范围,但仍然受到 Google API 使用政策的限制。
无论你选择哪种方法,请务必遵守搜索引擎的使用条款和 robots.txt 协议,避免对他们的服务器造成过大负担。
标签:python,search-engine From: 9538682