首页 > 解决方案 > 使用 Python 从站点(例如天气预报)获取实时日期

问题描述

我们有一个值每 20 毫秒更改一次的站点,例如天气预报站点。我想获取真实数据并使用python实时将它们保存在redis上。

如果我在 python 中使用请求库,实际上我的程序应该向服务器发送 https 请求并获得响应,该操作可能会延迟超过 100 毫秒,并且我无法获得实时更改值。

所以我不知道哪个库对我有用?

标签: pythonwebsocketpython-requests

解决方案


对于从网站中提取数据而不向服务器发送 HTTP 请求以重新加载整个网页的方法是使用 Selenium Web 驱动程序。

通常,在网络上有两种类型的网站:

  1. 静态网站 - 显示从后端获取的网页,并且不在前端更新的网站

  2. 动态网站 - 使用 React/Angular/Vue 等前端开发并使用 API 从后端获取更新的网站,无需重新加载整个网页。

要抓取静态网站,建议使用请求包,因为它发送 HTTP/HTTPS 请求以重新加载整个网页。由于在您的情况下,网页是动态的,因此您应该使用 Selenium。在 Selenium 代码中,您应该首先传递要定位的网站,然后您可以编写一个循环,该循环每隔几毫秒触发一个函数来获取内容。提示:使用 Selenium with headless 来防止浏览器窗口打开。

PS:对于很多网站来说,抓取是不合法的,因为您正在以编程方式访问它们的内容。这些网站有自己的 API,这些 API 是为向您提供所需内容而付费的。所以刮你自己的风险。


推荐阅读