Java 仅加载了两个页面

Java 仅加载了两个页面,java,web-scraping,jsoup,apache-httpcomponents,Java,Web Scraping,Jsoup,Apache Httpcomponents,我在刮 目标是提取特定国家的每位球员的击球统计数据。现在我正在提取输入国家的所有球员,然后为每个球员解析另一个链接,该链接将提供该球员的击球统计数据 我使用apachehttpcomponents解析http请求,使用JSoup解析DOM元素 一切都很顺利,但我面临的唯一问题是,当我开始刮两个球员被刮得很好,然后我的应用程序挂起 我已经将问题缩小到一个只抓取一个页面的方法,如果我提供任何指向该方法的espncricinfo链接,它只能处理两个请求,不能再处理更多 我想问题可能是espncrici

我在刮

目标是提取特定国家的每位球员的击球统计数据。现在我正在提取输入国家的所有球员,然后为每个球员解析另一个链接,该链接将提供该球员的击球统计数据

我使用apachehttpcomponents解析http请求,使用JSoup解析DOM元素

一切都很顺利,但我面临的唯一问题是,当我开始刮两个球员被刮得很好,然后我的应用程序挂起

我已经将问题缩小到一个只抓取一个页面的方法,如果我提供任何指向该方法的espncricinfo链接,它只能处理两个请求,不能再处理更多

我想问题可能是espncricinfo实施的某种bot预防机制。有人能帮我绕过这个吗

下面是grab方法的代码

public Document scrapSinglePage(String method, String url) {
        try {
            HttpGet httpGet = new HttpGet(url);
            String htmlResponse = "";

            HttpResponse httpResponse = httpClient.execute(httpGet, getLocalContext());
            BufferedReader rd = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));
            String line = "";
            while ((line = rd.readLine()) != null) {
                htmlResponse += "\r\n" + line;
            }

            //Parse response
            document = Jsoup.parse(htmlResponse);
            return document;
        } catch (IOException ex) {
            Logger.getLogger(Scrapper.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

非常感谢您的帮助。

它是否总是挂在特定的URL上?如果是这样,发布它挂起的URL。不,对于任何URL,只发出两个请求,它们根本没有响应……你是说两个请求可以工作,但第三个总是失败?尝试使用Java内置的网络类,例如HttpUrlConnection。关于机器人预防,您可能是对的。您可以通过在进行http调用时提供userAgent来解决此问题。检查这个谢谢你们的评论我通过完全破坏当前会话解决了它。。。因此,对于每个请求,我都会从espncricinfo获得一个新的cookie,他们无法跟踪我的请求。。。我不是百分之百确定它的机器人预防,但这是如何在正常的工作方式,它不工作。。。