java - 使用 jsoup 在 div 中选择标签的问题

标签 java javascript jquery html jsoup

我有一个包含以下内容的 html 文件:

<div class="title"><a href="../dorothy_perkins_true_blue_suedette/thing?id=130434603" title="Dorothy Perkins True blue suedette clutch bag">Dorothy Perkins True blue suedette clutch bag</a></div>

我想提取 href 中的 url。我有以下代码:

            Document doc = Jsoup.connect(url).get();
            Elements products = doc.select("div.title a[href]");
            System.out.println("size: "+products.size());

然而,打印显示大小为 0。它找不到任何匹配项。我使用的网址是 http://www.polyvore.com/bags/shop?category_id=35。你可以看看源代码,我很确定上面的代码是正确的。如果有人可以提供一些想法,那就太好了。非常感谢。

最佳答案

我相信您使用以下代码进行连接。

doc = Jsoup.connect("http://www.polyvore.com/bags/shop?category_id=35").get();

如果您执行 System.out.println(doc.html());,它会返回整 block HTML 源代码,这与我们通过 Mozilla 和 Chrome 等浏览器看到的完全不同。

要解决这个问题,需要在Jsoup连接中指定userAgent参数,如下所示。

    Document doc = null;
    Elements aEles = null;

    try {
        // doc = Jsoup.connect("http://www.polyvore.com/bags/shop?category_id=35").get();

        doc = Jsoup.connect("http://www.polyvore.com/bags/shop?category_id=35")
                .userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36")
                .referrer("http://www.google.com").get();

        if (doc != null) {
            aEles = doc.select("div.title > a");

            if (aEles != null)
                System.out.println("size: " + aEles.size());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

关于java - 使用 jsoup 在 div 中选择标签的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29502523/

相关文章:

javascript - 根据react-native中传递的参数设置动态名称

php - 将 JSON 数据导出到 Highchart(饼图)

java - 没有超时的Android语音识别?

java - 如何模拟 Google API AndroidPublisher 请求

javascript - Jquery 验证引擎在 onclick 函数之前进行检查

javascript - 用户滚动后触发 jquery .animate

javascript - 如何使用js从选定的li中获取文本值并将其传递给另一个li中的输入

Java:仅通过计算其哈希码从集合中检索对象

java - WolframAlpha API 在 Android 中抛出异常,但在控制台中不抛出异常

javascript - 'mouseenter' 和 'mouseleave' 事件一直以 div 作为光标触发