0

我正在制作一个监视 URL 更改的应用程序。为了对应用程序逻辑进行编程,我使用了 Google Apps Script 和 Google Sheet。

我解释一下我想到的监控机制。首先,脚本将从具有以下列的工作表中读取数据:

URL : 我们指明要监控的 URL

第一次:指示是否是第一次分析 URL。

更改:指示相对于上次分析的时间是否已进行更改。

HashValue:应用 MD5 哈希后分析的 URL 的 HTML 代码。

在执行脚本的那一刻,表格的行将开始被读取。对于每一行:

  1. 将读取 URL 并执行 URLFetchApp 方法以从该网页获取响应。
  2. getContentText 方法将应用于获得的答案以获取网页的 HTML 代码,我们将其保存在变量中。
  3. 我们将对 HTML 代码应用 MD5 哈希算法,并将其保存在一个变量中。
  4. 如果第一次分析 URL,我们将在 Changes 列中指出没有进行任何更改(这是我们第一次分析它),我们将在 HashValue 列中保存带有散列值的变量内容HTML 代码。
  5. 如果之前已经分析过 URL,我们会将之前注册的 HashValue 值与我们现在获得的值进行比较。
  6. 如果值不同,我们将在 Changes 列中指出发生了更改,并且我们将在 HashValue 列中保存新的哈希值。

我已经编写了代码。它适用于一些网站。但是对于其他网站,它不起作用。在分析了不起作用的网站的 HTML 代码后,使用在线文本比较器查找代码中的差异后,我注意到以下内容:

有些网站在重新加载同一页面两次时,即使内容是静态的,代码也会发生一些变化。例如,可以更改的是 HTML 标记的 ID 为 box-wrap-140,而当再次重新加载页面时,该 ID 为 box-wrap-148。

因此,脚本在执行时会检测到是否进行了更改,因为 HTML 代码是不同的。在研究了很多东西之后,我找不到解决这个问题的替代方案,因此标题中的问题

PS:我们可以忽略网站未关闭或给我们404、301等响应码等细节。这已经被编程并且可以正常工作。

PS2:对不起我的英语水平。

4

1 回答 1

0

Yon 可以使用cheerio GS查找自定义标签并排除这些更改(<footer>)或包含这些更改(如<div>)。

于 2022-03-02T18:36:29.320 回答