【发布时间】:2018-04-29 09:11:38
【问题描述】:
我希望监视一些网站(这些网站不是我自己的)的 CSS 是否有更改,并在它们发生更改时收到某种通知。如果您可以分享您对此的任何经验,以指出我如何编写代码的正确方向,我将不胜感激。
我希望这个脚本/应用程序能够通知 Slack 组的更改,我认为这需要一个 webhook。
不要求代码,只要求提供有关特定 API 和其他可能有用的工具的建议。
【问题讨论】:
标签: python css web automation bots
我希望监视一些网站(这些网站不是我自己的)的 CSS 是否有更改,并在它们发生更改时收到某种通知。如果您可以分享您对此的任何经验,以指出我如何编写代码的正确方向,我将不胜感激。
我希望这个脚本/应用程序能够通知 Slack 组的更改,我认为这需要一个 webhook。
不要求代码,只要求提供有关特定 API 和其他可能有用的工具的建议。
【问题讨论】:
标签: python css web automation bots
我建议修改 tschaefermedia 的答案。
- 为 .css 文件爬取网站,保存。
- 为每个文件制作一个 md5。
- 然后比较新文件和旧文件的md5。
- 如果 md5 不同,则文件已更改。
下面是一个获取大文件md5的函数。
def md5(file_name):
# make a md5 hash object
hash_md5 = hashlib.md5()
# open file as binary and read only
with open(file_name, 'rb') as f:
i = 0
# read 4096 bytes at a time and take the md5 hash of it and add it to the hash total
# b converts string literal to bytes
for chunk in iter(lambda: f.read(4096), b''):
i += 1
# get sum of md5 hashes
# m.update(a); m.update(b) is equivalent to m.update(a+b)
hash_md5.update(chunk)
# check for correct number of iterations
file_size = os.path.getsize(file_name)
expected_i = int(math.ceil(float(file_size) / float(4096)))
correct_i = i == expected_i
# check if md5 correct
md5_chunk_file = hash_md5.hexdigest()
return md5_chunk_file
【讨论】:
我建议在您的工作流程中使用 Github。这样您就可以很好地了解更改以及恢复到旧版本的方法。
【讨论】:
一种可能的解决方案:
爬取网站以获取 .css 文件,保存更改日期和/或文件大小。
每次抓取比较信息后,如果检测到更改,请使用 slack API 进行通知。我没有使用过 slack,对于这部分解决方案,也许其他人可以提供建议。
【讨论】: