我有 2 次拍摄的多个网页的快照。确定哪些网页已被修改的可靠方法是什么?
我不能依赖 RSS 提要之类的东西,我需要忽略诸如日期文本之类的小噪音。
理想情况下,我正在寻找 Python 解决方案,但直观的算法也会很棒。
谢谢!
嗯,首先你需要决定什么是噪音,什么不是。您可以使用像BeautifulSoup这样的 HTML 解析器来消除噪音,漂亮地打印结果,并将其作为字符串进行比较。
如果您正在寻找自动解决方案,您可以使用它difflib.SequenceMatcher
来计算页面之间的差异,计算相似度并将其与阈值进行比较。
解决方案实际上取决于您是在抓取特定站点,还是尝试创建适用于任何站点的程序。
您可以通过以下方式查看哪些区域经常变化:
diff <(curl http://stackoverflow.com/questions/) <(sleep 15; curl http://stackoverflow.com/questions/)
如果您只担心单个站点,您可以创建一些 sed 表达式来过滤掉时间戳等内容。您可以重复,直到小字段没有显示差异。
一般问题要困难得多,我建议比较初学者页面上的总字数。
如果您将更改的阈值设置为忽略了适合您的噪声量的距离,则诸如Levenshtein Distance之类的东西可能会派上用场。
只需使用 MD5 或 SHA1 对文件进行快照...如果下次检查时值不同,则它们会被修改。