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

标签 java html-parsing jsoup

我正在尝试解析 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 解析器,则通过字符串函数手动解析它毫无意义。

关于java - 如何使用 JSoup 解析 HTML 文档以获取链接列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7122415/

相关文章:

java - Jsoup网站登录抛出未知异常

java - 在python中将java程序作为子进程调用时如何传递字典?

java - 链表插入节点后

java - BitmapFactory 在 .png 图像上完美工作,但当我从 url 加载 jpeg 图像时返回 null

java - 使用 Java 在 HTML 页面中提取动态呈现的内容

java - JSOUP 查找词组

android - android 设备(android 3.0 或更新版本)中 UI 线程中的网络

java - Hibernate 中匿名对象的内存占用

java - Jsoup 设置接受 header 请求不起作用

java - 解析 jsoup 错误。根元素为空