【问题标题】:Check if file has been changed on dynamic website检查动态网站上的文件是否已更改
【发布时间】:2021-03-16 10:30:08
【问题描述】:

我正在编写一个函数,它每天从网站下载一个 zip 文件,前提是该文件已更新。有什么方法可以让我在不下载的情况下查找文件是否已更改?同一个网站也生成了一个表,所以我在想,检查表中是否有新值,如果是,则下载文件。
还有其他我觉得有用的方法吗?很遗憾,我无法发布我正在下载文件表单的网站。

【问题讨论】:

  • 取决于服务器支持什么。如果它接受If-Modified-SinceIf-None-Match 之类的条件标头,或者至少输出Last-Modified HTTP 听众等,那将是这样做的方法。
  • 真正做到这一点的唯一方法是检查更改(下载文件或在页面上查找您知道与文件更改同步更改的内容)或网站提供某种 API 可以告诉您它是否已更改。如果站点有站点地图 xml 文件,那么可能会列出与文件同步更改的页面的最后修改日期,但它会反映页面的 any 更改,因此它可能没有用适合您(并且可能甚至无法正确更新 - 站点地图文件经常被忽略)。

标签: python python-3.x web web-scraping


【解决方案1】:

如果您请求资源的网站实现了 Etag 和条件请求,您可以使用它来获取资源。

步骤:

  • 请求资源/resource,保存Etag Header
  • 再次请求内容,但使用 If-None-Match=[saved-etag]。如果 etag 已更改,服务器将 200 OK,否则为 304(未修改)。
  • 您可以尝试 HEAD 请求以仅获取内容的标头,并与已保存的标头进行比较以确定内容是否已更改。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多