Jsoup超时没有获取数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jsoup超时没有获取数据相关的知识,希望对你有一定的参考价值。

我有以下代码行来使用jsoup获取html文档

Document doc = Jsoup.connect("http://nomads.ncep.noaa.gov/pub/data/nccf/com/hrrr/prod/hrrr.20180904/conus/")
            .userAgent("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0")
            .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
            .header("Host", "nomads.ncep.noaa.gov")
            .timeout(10*1000)
            .get();

无论我使用什么标头,这都会超时。相同的网址:

http://nomads.ncep.noaa.gov/pub/data/nccf/com/hrrr/prod/hrrr.20180904/conus/

当我在Chrome或Firefox中打卡时,它可以正常运行。我在这里错过了什么?非常感谢所有的帮助。

答案

问题是,this site非常慢,平均加载需要30秒(你可以在浏览器中加载看到)。所以你需要在50秒左右放置超时。

这应该可以解决你的问题......

Document doc = Jsoup.connect("http://nomads.ncep.noaa.gov/pub/data/nccf/com/hrrr/prod/hrrr.20180904/conus/")
                .userAgent("Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0")
                .header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
                .header("Host", "nomads.ncep.noaa.gov")
                .timeout(50000)
                .get();

以上是关于Jsoup超时没有获取数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSOUP java 抓取数据时如何防止死超时?

Jsoup 没有完全获取原始 html 代码

抓jsoup_01_方案代码

Jsoup SocketTimeoutException:读取超时

Jsoup:从表中获取数据

使用 Jsoup 获取网页元素