博客 - 找到上次更新的时间

时间:2018-06-04 09:06:54

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

我列出了大约2000个不同语言的博客,这些博客的布局不同。我有两个任务:识别死链接并识别超过90天未更新的博客。虽然第一个任务很容易,但第二个任务让我很头疼。

示例:

http://100mirror.com/

https://www.adamsmith.org/blog

http://allfinancialmatters.com/(此问题已超过90天未更新)

我试过了:

  • 使用正则表达式提取年份,前10个字符和10个字符 之后并尝试解析使用dateparser - 并不真正起作用
  • 使用javascript:alert(document.lastModified) - 它不适用于动态生成的网站
  • 使用回程机器 - 太过虚空

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

我正在使用Python。

2 个答案:

答案 0 :(得分:1)

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

array

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

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

答案 1 :(得分:0)

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

  1. DD / MM / YY
  2. DD-MM-YY
  3. 月dd,yyyy
  4. YYYY.MM.DD
  5. 等等......并寻找所有这些。在页面上找到其中一个匹配后,在主页上获取最大日期,这通常代表博客上次更新的时间。

    如果您想到的任何格式上的特定网站根本不匹配,请查看该网站使用的格式,并将该格式与其他正则表达式一起添加,然后重复。

    另外,你可以正确使用2018或18号的正则表达式,如果它们不在任何地方,那么该网站可能会在2017年最后一次更新(但这当然只是现在,并且逻辑将会如果你刚刚开始2019年就失败了......)

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

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