我正在制作一个监视 URL 更改的应用程序。为了对应用程序逻辑进行编程,我使用了 Google Apps Script 和 Google Sheet。
我解释一下我想到的监控机制。首先,脚本将从具有以下列的工作表中读取数据:
URL : 我们指明要监控的 URL
第一次:指示是否是第一次分析 URL。
更改:指示相对于上次分析的时间是否已进行更改。
HashValue:应用 MD5 哈希后分析的 URL 的 HTML 代码。
在执行脚本的那一刻,表格的行将开始被读取。对于每一行:
- 将读取 URL 并执行 URLFetchApp 方法以从该网页获取响应。
- getContentText 方法将应用于获得的答案以获取网页的 HTML 代码,我们将其保存在变量中。
- 我们将对 HTML 代码应用 MD5 哈希算法,并将其保存在一个变量中。
- 如果第一次分析 URL,我们将在 Changes 列中指出没有进行任何更改(这是我们第一次分析它),我们将在 HashValue 列中保存带有散列值的变量内容HTML 代码。
- 如果之前已经分析过 URL,我们会将之前注册的 HashValue 值与我们现在获得的值进行比较。
- 如果值不同,我们将在 Changes 列中指出发生了更改,并且我们将在 HashValue 列中保存新的哈希值。
我已经编写了代码。它适用于一些网站。但是对于其他网站,它不起作用。在分析了不起作用的网站的 HTML 代码后,使用在线文本比较器查找代码中的差异后,我注意到以下内容:
有些网站在重新加载同一页面两次时,即使内容是静态的,代码也会发生一些变化。例如,可以更改的是 HTML 标记的 ID 为 box-wrap-140,而当再次重新加载页面时,该 ID 为 box-wrap-148。
因此,脚本在执行时会检测到是否进行了更改,因为 HTML 代码是不同的。在研究了很多东西之后,我找不到解决这个问题的替代方案,因此标题中的问题
PS:我们可以忽略网站未关闭或给我们404、301等响应码等细节。这已经被编程并且可以正常工作。
PS2:对不起我的英语水平。