1

嗨 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()

连接到该页面。但是,当我访问失败的网页(重定向)时,我被重定向到另一个页面。在我的程序中,控制台不会抛出任何关于连接的异常。相反,该异常只是索引超出范围异常,因为意外重定向的网页具有完全不同的结构。

4

1 回答 1

0

由于某些页面可能偶尔会关闭,服务器可能会通过重定向到不同的页面来处理它,比如主页

通常,当网站上的页面暂时不可用并被重定向时,客户端会收到响应代码为 302(永久移动)或 307(临时移动),并带有指向重定向页面的“位置”标头。在这种情况下,您似乎可以通过将followRedirects设置为 false来配置Connection不重定向。然后您可以在将响应转换为 Document 以进行进一步处理之前验证 HTTP 响应代码。

于 2012-10-15T11:34:20.157 回答