【问题标题】:Jsoup Can't parse a link correctly to HTMLJsoup 无法正确解析指向 HTML 的链接
【发布时间】:2013-04-16 18:00:27
【问题描述】:

我一直在使用 Jsoup 和 Google 搜索博客,一切正常,但是当我使用另一个像 WhosTalkin 这样的网站时,我无法提取结果数据和链接。我的代码:

Connection.Response response = null;
    String url = "http://www.whostalkin.com/search?q=boston&x=0&y=0";
        // 
        try {
             response = Jsoup.connect(url)
                        .userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31")
                        .timeout(10000)
                        .execute();
        } catch (IOException e) {
             System.out.println("io - "+e);
        }
        // get page title
        Document doc = response.parse();
        String title = doc.title();
        System.out.println("Page Title: " + title +"\n");

这里是我提取数据的部分:

Elements links = doc.getElementsByTag("h3");
        for (Element link : links) { 
            System.out.println("\nTitle: " + link.select("a").attr("title"));
            System.out.println("Result: " + link.select("a").attr("href"));
            }

当我只是想确保 Jsoup 无法正确解析 HTML 时,我使用了Try Jsoup 并获取 URL,当我使用浏览器检查它时,他给了我与代码不匹配的 HTML 代码。

【问题讨论】:

    标签: java jsoup


    【解决方案1】:

    您没有使用正确的选择器。寻找drill CSS 类。更容易接触元素。

    Elements elementsByClass = parse.getElementsByClass("drill");
    for (Element link : elementsByClass)
    {
        List<Node> childNodes = link.childNodes();
        System.out.println("Title: " + childNodes.get(1));
        System.out.println("Result: " + childNodes.get(0).attr("src"));
    }
    

    打印

    Title:  Backtype
    Result: http://www.whostalkin.com/img/backtype.png
    
    Title:  FriendFeed
    Result: http://www.whostalkin.com/img/friendfeed.png
    
    ...
    

    【讨论】:

    • 好吧,我没有明白你告诉我的关于“演习”的内容,但首先我希望结果是这样的: 标题:为波士顿祈祷......结果:www.linkhere。行的底部我无法提取链接上显示的搜索结果
    • 你的意思是搜索结果?它们是动态获取的。由于 Jsoup 不评估 HTML 的 javascript,因此您无法使用 Jsoup 轻松解析它们。
    • 是的,我的意思是,那么还有其他替代解决方案吗?我是另一个解析器?
    • 查询本身似乎来自/main.php?q=boston。使用它。
    猜你喜欢
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 2022-01-02
    • 1970-01-01
    相关资源
    最近更新 更多