【问题标题】: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,那么当出现新图像时,您可能会收到通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 2013-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多