java - jsoup - 如何检查网页是否存在

标签 java screen-scraping jsoup

您好 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 指向重定向页面。看来您可以通过设置 followRedirectsConnection 配置为在这种情况下不重定向。为假。然后,您可以在将响应转换为文档以进行进一步处理之前验证 HTTP 响应代码。

关于java - jsoup - 如何检查网页是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12894691/

相关文章:

java - 如何使用 Selenium WebDriver 和 java 从 CSS 自定义下拉列表中选择一个元素?

python - 使用 lxml 有效地解析元标记?

web-crawler - 如何使用Goutte

java - Jsoup,解析html表

java - 使用来自 java 对象的值从模板动态创建 word 文档

Java FileNotFoundException 错误,因为语句不在方法中

java - 从 ArrayList 中删除子列表

java - 如何从Java中的网页获取信息?

java - 如何将 bean 注入(inject) @Controller 类

Python BeautifulSoup 获取文本第一个标签