【问题标题】:Live traffic cam scraping实时交通摄像头抓取
【发布时间】:2020-10-21 17:20:24
【问题描述】:
我想知道最优雅的抓取实时网络摄像头(流量)数据的方法是什么,最好使用 Python。网络摄像头提要由 API 表示,每个获取请求都会生成来自网络摄像头的当前可用提要的图像。有问题的提要有 2/3 秒的延迟,因此每分钟可以请求约 30 张图像。
我当前的(简单的)解决方案只是循环查询 API(可能使用睡眠计时器),然后清除所有重复的图像。但是,这似乎很脏,我想知道是否有更清洁/更优雅的解决方案可用。
原则上,我希望解决方案(如果可能的话)避免:
这样的事情可能吗?
【问题讨论】:
标签:
python
image
web
web-scraping
【解决方案1】:
为避免代码中出现睡眠定时器,您可以编写一个由cron 触发的进程。 Cron 将处理以定义的时间间隔运行您的脚本,例如每 2 秒(每分钟 60 秒 / 30 张图像)。
示例进程可能使用requests 调用API。假设图像被传回,下面的示例代码可能会起作用。如果传回 JSON 字符串,则需要对其进行解析并提取图像 URL。
r = requests.get('https://traffic-cam-site.com/cam', auth=('user', 'pass'))
if r.status == 200:
image = r.content
为避免下载重复图像,您需要知道 API 上何时出现新图像。为此,您需要定期检查 cam 站点 API。将收集到的图像的hash 存储在数据库(或文本文件)中,并将其与您的请求一起发送到 API。然后散列当前存在于 cam 站点上的图像 - 如果散列匹配,则不要将图像下载到您的服务器。
或者,如果 cam 站点 API 执行 push notifications,那么当出现新图像时,您可能会收到通知。