使用从 HTTPClient 检索到的数据到 JSoup

use*_*187 5 html java http httpclient jsoup

我正在使用 HTTPClient 连接到网站。以下代码片段用于此目的:

 byte[] responseBody = method.getResponseBody();
 System.out.println(new String(responseBody));
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了网站的html代码。此外,我只想访问代码中的一些数据,我可以使用以下代码片段使用 JSoup 访问这些数据:

Document doc = Jsoup.connect(url).get();
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我使用“url”直接指定了网站的 url。这意味着如果我使用 JSoup,我不需要 HTTPClient。有没有一种方法可以使用使用 HTTPClient 检索到的“responseBody”来集成到 JSoup 代码中,这样我就不必使用 Document doc = Jsoup.connect(url).get();

谢谢

Pop*_*ibo 5

您可以HTML直接通过Jsoup#parse以下方式解析:

Document doc =  Jsoup.parse(new String(responseBody));
Run Code Online (Sandbox Code Playgroud)

尽管我担心将字节数组直接转换为字符串,但在您的情况下,它应该可以正常工作。

另一种方式,我可以使用URLConnection并获取句柄InputStream并将其解析为带有提供的字符集编码的字符串:

URLConnection connection = new URL("http://www.stackoverflow.com").openConnection();
        InputStream inStream = connection.getInputStream();
        String htmlText = org.apache.commons.io.IOUtils.toString(inStream, connection.getContentEncoding());

        Document document = Jsoup.parse(htmlText);
        Elements els = document.select("tbody > tr > td");

        for (Element el : els) {
            System.out.println(el.text());
        }
Run Code Online (Sandbox Code Playgroud)

会给:

Stack Overflow Server Fault Super User Web Applications Ask Ubuntu Webmasters Game Development TeX - LaTeX
Programmers Unix & Linux Ask Different (Apple) WordPress Answers Geographic Information Systems Electrical Engineering Android Enthusiasts Information Security
Database Administrators Drupal Answers SharePoint User Experience Mathematica more (14)
...
Run Code Online (Sandbox Code Playgroud)