使用python(基于URL)推断网页时区的最简单但防弹的方法?

使用python(基于URL)推断网页时区的最简单但防弹的方法?,python,django,timezone,Python,Django,Timezone,我正在编写基于django的RSS/Atom阅读器,它是时区感知的,我认为这是必要的。但有些网站使用的是TZ朴素的格式(即使是大网站——卫报您好),根据网站推断正确时区的最佳方法是什么 根据网站推断正确时区的最佳方法是什么 不能根据网站推断时区。一个网站可以从世界任何地方提供服务,并包含世界任何地方或多个不同地方的内容 我在数据库中得到了RSS/atom提要URL,这是我的出发点 您无法仅从URL分辨任何内容。但是,您可以假设URL指向有效的RSS或ATOM提要,获取提要的内容并检查其中包含的日

我正在编写基于django的RSS/Atom阅读器,它是时区感知的,我认为这是必要的。但有些网站使用的是TZ朴素的格式(即使是大网站——卫报您好),根据网站推断正确时区的最佳方法是什么

根据网站推断正确时区的最佳方法是什么

不能根据网站推断时区。一个网站可以从世界任何地方提供服务,并包含世界任何地方或多个不同地方的内容

我在数据库中得到了RSS/atom提要URL,这是我的出发点

您无法仅从URL分辨任何内容。但是,您可以假设URL指向有效的RSS或ATOM提要,获取提要的内容并检查其中包含的日期

  • 元素上定义
    pubDate
    属性,在
    元素上定义可选的
    lastBuildDate
    。两者都在同一个位置

    • 此格式可能包含格式为
      +/-HHMM
      的时区偏移,或中定义的少数有限缩写之一
  • 在每个
    元素上定义一个
    发布的
    元素,在
    元素上定义一个
    更新的
    属性。两者都在同一个位置

    • 此格式必须包含格式为
      +/-HH:MM
      Z
      的时区偏移量(适用于UTC)

    • 请注意,此格式是的特定配置文件

因此,您可以从通道/馈送的时间戳或单个消息中提取偏移量。然而:

  • 无法保证开始时时区偏移设置正确

  • 源可能已将数据标准化为UTC,也可能未将数据标准化为UTC,在这种情况下,所有偏移量都将为零

  • 偏移量并不唯一标识时区。请参见中的“时区!=偏移”


如果要定期对提要进行爬网,比如每X分钟爬网一次,则可以使用爬网时间(新闻故事首次出现在提要上的时间)。不精确,但一致。我曾考虑过使用“python-geoip2”,但我担心a)这是一个过度的杀伤力-还有一个依赖性b)不太可靠基于网站上的什么?你的问题不清楚。你的意思是,给定一个URL,时区是什么?“这太荒谬了!”马特·约翰逊(Matt Johnson)首先——我认为这是显而易见的,其次——不想阻止其他方法或提出任何建议。我在数据库中得到了RSS/atom提要URL,这是我的出发点。我知道所有这些。我正在使用RSS/Atom中可用的时区。我的问题是,如果feed中没有TZ信息,我该怎么办?这是无法做到的。我在回答的第一部分解释了原因。