0

我正在使用 python 编写一个 web 监控脚本,它将查看页面的存档版本,将其与当前的在线版本进行比较,并在有任何更改时通知我。我有这项工作的基础知识,但是在 Web 表单中具有动态属性的网站遇到了问题。页面一般没有变化,但表单中的隐藏属性发生了变化,这会触发通知。

在两个 HTML 文件上使用 python 的 diflib diff = difflib.unified_diff(content1, content2),我能够得到下面的截断输出。

-<input type='hidden' value='contact-us' name='ufo-form-pagename' id='ufo-form-pagename'/><input type='hidden' value='927eea55b8e87e961314033fce84de4a1418504077' name='ufo-sign' id='ufo-sign'/>

+<input type='hidden' value='contact-us' name='ufo-form-pagename' id='ufo-form-pagename'/><input type='hidden' value='1ccb910cbb9dc0d6f6dd5ed99212df741418800872' name='ufo-sign' id='ufo-sign'/>

我想“阅读”这个输出,并返回不具有相同值的 HTML 属性,在这种情况下value='927eea55b8e87e961314033fce84de4a1418504077',并且value='1ccb910cbb9dc0d6f6dd5ed99212df741418800872'

我该怎么做呢?

4

1 回答 1

0

我正在使用 python 编写一个 web 监控脚本,它将查看页面的存档版本,将其与当前的在线版本进行比较,并在有任何更改时通知我。

你不是只回答你自己的问题吗?如果有差异,则文件已更改。:)

听起来您想要做的是忽略某些类别的更改。如果您对正确解析 HTML 不感兴趣,那么天真的 hack 可能是将所有空格转换为换行符,然后运行您的差异。在这种情况下,您会看到的唯一区别是value='927eea55...'您可以选择并忽略正则表达式。

如果你想正确解析 HTML 并做一些更智能的差异,LMGTFY:

于 2014-12-18T04:25:25.427 回答