繁体   English   中英

如何使用JSoup解析HTML文档以获取链接列表?

[英]How do I parse an HTML document with JSoup to get a list of links?

我正在尝试解析http://www.craigslist.org/about/sites来构建一组文本/链接,以便使用此信息动态加载程序。 到目前为止,我已经这样做了:

Document doc = Jsoup.connect("http://www.craigslist.org/about/sites").get();
Elements elms = doc.select("div.colmask"); // gets 7 countries

在这个标签下面有我想要的doc.select("div.state_delimiter,ul")标签。 我设置了我的迭代器并进行了一段时间的查看并调用了iterator.next().outerHtml(); 我看到每个国家的所有标签。

如何逐步浏览每个div.state_delimiter ,拉出该文本然后向下直到有</ul>定义各个县/城市链接/文本的状态结束?

我正在玩这个并且可以通过将outerHtml()设置为String然后手动解析字符串来完成它,但我确信有一种更简单的方法可以做到这一点。 我尝试了text()并尝试了attr("div.state_delimiter") ,但我认为我正在弄乱模式/例程以正确地执行此操作。 想知道是否有人可以帮助我,并告诉我如何将div.state_delimiter放入文本字​​段然后<ul><li></li></ul>我想要所有<li></li>每个州的<ul></ul>下。 希望尽可能简单地抓取http:// && html。

包含城市的<ul><div class="state_delimiter">的下一个兄弟。 您可以使用Element#nextElementSibling()从该div中获取它。 这是一个启动示例:

Document document = Jsoup.connect("http://www.craigslist.org/about/sites").get();
Elements countries = document.select("div.colmask");

for (Element country : countries) {
    System.out.println("Country: " + country.select("h1.continent_header").text());
    Elements states = country.select("div.state_delimiter");

    for (Element state : states) {
        System.out.println("\tState: " + state.text());
        Elements cities = state.nextElementSibling().select("li");

        for (Element city : cities) {
            System.out.println("\t\tCity: " + city.text());
        }
    }
}

doc.select("div.state_delimiter,ul")没有做你想要的。 它返回文档的所有 <div class="state_delimiter"> <ul>元素。 如果您已经掌握了HTML解析器,那么通过字符串函数手动解析它是没有意义的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM