首页 > 编程问答 >如何使用Python进行“google”“bing”“yahoo”搜索?

如何使用Python进行“google”“bing”“yahoo”搜索?

时间:2024-07-21 16:01:05浏览次数:17  
标签:python search-engine

我一直在谷歌上搜索要使用的 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

相关文章

  • 用Python实现Cmpp协议的教程
    引言&协议概述(CMPP)是中国移动为实现短信业务而制定的一种通信协议,全称叫做ChinaMobilePointtoPoint,用于在客户端(SP,ServiceProvider)和中国移动短信网关之间传输短消息,有时也叫做移动梦网短信业务。CMPP3.0是该协议的第三个版本,相比于前两个版本,它增加了对长短信的支持、优......
  • Python 请求库无法成功完成 POST(Nanotec 电机控制器)
    我有一个运行RESTWeb服务的电机控制器,我想使用Python对其进行控制。我能够使用Python请求库成功执行GET请求。但是我无法执行POST请求。它给了我以下错误:requests.exceptions.ConnectionError:('Connectionaborted.',RemoteDisconnected('Remoteendclosed......
  • 为什么 exitonclick 在我的 Python Turtle 图形程序中不起作用?
    我正在开发一个PythonTurtle图形程序,我正在尝试使用exitonclick方法在单击窗口时关闭窗口。但是,它似乎不起作用。fromturtleimportTurtle,Screenrem=Turtle()screen=Screen()rem.fd(70)defclear():screen.clearscreen()screen.listen()s......
  • 服务器和本地主机上对相同请求(curl、python aiohttp)的不同响应
    我有一个用Python编写的解析器(aiohttp、bs4)。解析器的功能之一是通过链接访问文件(例如:https://modsfire.com/d/Mwv01aESgj73zx7)。importaiohttpimportyarlimportasynciofrompprintimportpprintMODSFIRE_URL="https://modsfire.com/"COOKIES={......
  • python 中两体问题的集成
    我正在尝试使用python和pygame创建一个二体Sim作为更大项目目标的第一阶段,以在屏幕上显示对象。我目前的主要问题是,轨道卫星在目标行星周围倾斜时它应该处于稳定的320公里圆形轨道上。我为四种不同的集成制作了四种不同的功能。Euler、Leapfrog、Verlet和RK4。......
  • 如何保护Python代码不被用户读取?
    我正在用Python开发一个软件,该软件将分发给我雇主的客户。我的雇主希望使用有时间限制的许可证文件来限制软件的使用。如果我们分发.py文件甚至.pyc文件,则很容易(反编译并)删除检查另一个方面是我的雇主不希望我们的客户读取代码,担心代码可能被窃取或......
  • 无法更新 Python MySQL 中的tinyint
    我无法使用以下代码更新我的Tinyint值(valid_state):importmysql.connectormydb=mysql.connector.connect(host="localhost",user="mahdi",passwd="Abcd@1324",database="mycustomers")mycursor=mydb.cursor()sql="UPDATE`......
  • Cython:将 2D 数组从 Python 传递到 C 并检索它
    我正在尝试使用Cython用C语言构建相机驱动程序的包装器。我是Cython的新手(两周前开始)。经过一番努力,我可以成功开发结构体、一维数组的包装器,但现在我陷入了二维数组的困境。相机的CAPI之一采用2D数组指针作为输入,并将捕获的图像分配给它。该函数需要从Python调......
  • 如何使用python将大文件上传到Onedrive
    importrequestsfrommsalimportPublicClientApplicationfromdotenvimportload_dotenvimportos#Loadenvironmentvariablesload_dotenv()#ConfigurationfromenvironmentvariablesCLIENT_ID=os.getenv('CLIENT_ID')#TENANT_IDisnotused......
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] LYA的生日派对座位安排(200分) - 三
    ......