首页 > 解决方案 > 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 中打孔时,它工作得很好。我在这里想念什么?非常感谢您提供的所有帮助。

标签: seleniumweb-scrapinghttp-headersweb-crawlerjsoup

解决方案


问题是,这个网站很慢,平均加载需要 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();

推荐阅读