【问题标题】:blogs - find time of last update博客 - 查找上次更新时间
【发布时间】:2018-06-04 09:06:53
【问题描述】:

我有一个列表,其中包含大约 2000 个不同语言和不同布局的博客。我有两个任务:识别死链接和识别超过 90 天未更新的博客。虽然第一个任务很简单,但第二个任务让我很头疼。

例子:

http://100mirror.com/

https://www.adamsmith.org/blog

http://allfinancialmatters.com/(这个90多天没更新了)

我试过了:

  • 使用正则表达式提取年份以及前 10 个字符和 10 个字符 之后尝试解析使用 dateparser - 并没有真正起作用
  • 使用 javascript:alert(document.lastModified) - 它不适用于动态生成的网站
  • 使用 Wayback 机器 - 太不准确了

有人知道如何处理这项任务吗?

我正在使用 Python。

【问题讨论】:

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


    【解决方案1】:

    首先检查整个 html 中的当前年份。例如(2018)

    years = re.findall('.*2018.*', str(res.content)
    

    迭代每条记录,查找是否有任何月份可用,并且是过去3个月(4、5、6、3月、4月、5月、6月),如果是返回博客已在90天内更新,否则认为没有。

    re.findall('.*(Jun|Mar|Apr).*', years[0])
    

    【讨论】:

      【解决方案2】:

      无论博客的格式或语言如何,可以安全地假设每个博客的日期格式在整个博客中保持不变。我会为我能想到的所有日期类型构建不同的正则表达式搜索:

      1. 日/月/年
      2. dd-mm-yy
      3. 月 dd, yyyy
      4. yyyy.mm.dd

      等等......然后寻找所有这些。一旦在页面上匹配其中一个,获取主页上的最大日期,这通常表示上次更新博客的时间。

      如果特定网站在您能想到的任何格式上都完全不匹配,请查看该网站使用的格式并使用另一个正则表达式添加该格式,然后重复。

      此外,您可以仅对数字 2018 或 18 进行正则表达式,如果找不到它们,则该网站可能最后一次更新是在 2017 年(当然,现在只有这样,如果您这样做,逻辑将失败)重新开始 2019 等等...)

      很抱歉没有打扰示例代码,但您也没有 :) 这只是我将使用和改进的基本算法。您可以在此处查看日期正则表达式示例:Regular Expression to match valid dates

      您也可以使用这里的一些答案:Check if string has date, any format

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-01
        • 2019-10-26
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        • 2014-01-03
        • 2012-05-19
        • 2010-09-20
        相关资源
        最近更新 更多