您好stackoverflow用户。
当我在进行网页抓取时,我遇到了一个问题,当我浏览特定网站的一系列网页时,他们的网址是
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()
连接到该页面。但是,当我访问失败的网页(重定向)时,我被重定向到另一个页面。在我的程序中,控制台不会抛出有关连接的任何异常。相反,异常只是一个索引超出范围的异常,因为意外的重定向网页具有完全不同的结构。
答案 0 :(得分:0)
由于某些页面可能偶尔会关闭,服务器可能会通过重定向到其他页面来处理它,比如主页
通常,当网站上的页面暂时不可用并被重定向时,客户端会获得响应代码302(永久移动)或307(暂时移动),其中“Location”标题指向重定向页面。在这种情况下,您似乎可以将Connection
配置为不重定向,方法是将followRedirects设置为false。然后,您可以在将响应转换为Document以进行进一步处理之前验证HTTP响应代码。