首先,我对编程一无所知。我想要做的是访问此存档网站上未显示的 17 个日期:https://web.archive.org/web/20031002051647/http://www.avengedsevenfold.com:80/tourdates/tourdates.php(当然还有本网站旧版本/新版本上的隐藏日期)
当我点击“下一步”或“显示所有日期”时,网站只会重新加载。有没有办法访问日期?我浏览了源代码,但没有找到任何东西。但日期肯定在某个地方,对吧?
答案1
它们没有被存档。
互联网档案馆无法访问网站的服务器端逻辑,也无法完全复制动态页面(例如本例中的 PHP)的行为;它能做的最好的事情就是跟踪链接并将每个已知的 URL 下载为独立的静态页面。
爬虫可以跟踪并存档诸如 之类的简单链接<a href="news.php?page=2">
。但是,您网站的“下一个”/“显示全部”不是常规链接– 它们是 JavaScript 操作和基于 POST 的表单的不正当组合,单独使用其中任何一种都会让爬虫无法将它们识别为链接:
<a href="#" onclick="JavaScript:nextPage()"><img src=...></a>
虽然归档器可以存储复制客户端 JavaScript 代码,它不会解释该代码,也不会理解 nextPage() 在这里做什么,因此必须完全跳过这些基于 JS 的按钮。(你可以看到 IA仅存档此 URL。
(即使归档器可以发现 JS 代码的作用,它也不会被允许触碰这个特定的表单——POST 的使用意味着每个请求都可能导致服务器发生一些变化。只有 GET 请求才是安全的自动抓取。)
因此,当您单击“下一步”按钮时,浏览器仍会运行 nextPage() 并发送 page=2 或类似的请求,但不再有相应的服务器端代码来处理该请求 - 档案馆只能使用与以前相同的静态数据进行响应。