我正在尝试解析 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/