我正在尝试使用java创建一个桌面应用程序,以跟踪对作为副项目的网页所做的更改,以及监控我的教授何时向其网页添加内容。我做了一些研究,我目前的方法是使用Jsoup库来检索网页,通过散列算法运行它,然后将当前散列值与先前的散列值进行比较。
这是推荐的方法吗?在我做任何研究之前,我对建议和想法持开放态度,我不知道如何开始,也不知道jsoup是什么。
答案 0 :(得分:0)
哈希方法的一个潜在问题:如果页面包含每次刷新时发生更改的动态生成内容,就像许多现代网站一样,您的程序将报告页面不断变化。只有在网站不使用任何动态内容(广告,点击计数器,社交媒体等)时,才能隐藏整个页面。
你有什么具体的改变?也许发布了新的作业?您可能不希望监视整个页面以进行更改。因此,您应该使用 HTML解析器 - 这就是Jsoup的用武之地。
首先,将页面解析成为Document对象:
Document doc = Jsoup.parse(htmlString)
现在,您可以在Document对象上执行多种方法,以遍历HTML节点。 (See Jsoup docs on DOM navigation methods)
例如,假设网站上有一个表格,表格的每一行代表不同的分配。下面的代码将通过选择每个表的标记来获取表的ID及其每一行。
Element assignTbl = doc.getElementById("assignmentTable");
Elements tblRows = assignTbl.getElementsByTag("tr");
for (Element tblRow: tblRows) {
tblRow.html();
}
您需要以某种方式查看网页的源代码(例如Google Chrome中的Inspect Element),以确定网页的结构并相应地设计您的代码。这样,算法不仅更可靠,而且可以更进一步,例如提取已更改的赋值的详细信息。 (如果您需要帮助,请使用目标页面的HTML编辑您的问题。)