您好 stackoverflow 用户。
当我进行网页抓取时,我遇到了一个问题,当我抓取特定网站的一系列网页时,它们的 URL 为
http://www.somewebsites.com/abc.php?number=0001
http://www.somewebsites.com/abc.php?number=0002
http://www.somewebsites.com/abc.php?number=0003
..
..
http://www.somewebsites.com/abc.php?number=1234
类似这样的事情。由于某些页面可能偶尔会关闭,服务器可能会通过重定向到不同的页面(例如主页)来处理它。这样,我的抓取程序就会遇到与语法结构变化相关的各种异常(因为它是不同的页面)。
我想知道是否有一种方法可以检查我正在抓取的网页是否存在,以防止我的程序在这种情况下被终止。
我正在使用
Jsoup.connect()
连接到该页面。但是,当我访问失败的网页(重定向)时,我被重定向到另一个页面。在我的程序中,控制台不会抛出任何有关连接的异常。相反,该异常只是索引越界异常,因为意外重定向的网页具有完全不同的结构。
最佳答案
Since some of the pages may be occasionally down and the server may handle it by redirecting to a different page, say the homepage
通常,当网站上的页面暂时不可用并被重定向时,客户端会收到 302(永久移动)或 307(临时移动)的响应代码,其中“Location” header 指向重定向页面。看来您可以通过设置 followRedirects 将 Connection
配置为在这种情况下不重定向。为假。然后,您可以在将响应转换为文档以进行进一步处理之前验证 HTTP 响应代码。
关于java - jsoup - 如何检查网页是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894691/