如何使用Android中的Jsoup访问HTML数据中具有不同idname的内部相同classname div

时间:2016-04-12 18:47:50

标签: java android html parsing jsoup

我正在尝试从HTML解析数据。我需要从内部div class = vacancy-item获取具有不同idnames的所有名称。 请在下面查看HTML代码

<section class="home-vacancies" id="vacancy_wrapper">
<div class="home-block-title">job openings</div>
<div class="vacancy-filter">
    ...................
</div>
<div class="vacancy-wrapper">
    <div class="vacancy-item" data-id="9120">
        ..............
    </div>
    <div class="vacancy-item" data-id="9119">
        ..................
    </div>
    <div class="vacancy-item" data-id="9118">
        ................................
    </div>
    <div class="vacancy-item" data-id="9117">
        .............................
    </div>

这是我的代码: 请帮忙。

       doc = Jsoup.connect("URL").get();
       //title = doc.select(".page-content div:eq(3)");
       title = doc.getElementsByClass("div[class=vacancy-wrapper]");
       titleList.clear();
       for (Element titles : title) {     
            String text = titles.getElementsB("vacancy-item").text();
            titleList.add(text);
       }

谢谢!

1 个答案:

答案 0 :(得分:2)

您只能使用class查询getElementByClass属性,例如getElementByClass("vacancy-wrapper")会奏效。

您还需要第二个循环来将每个vacancy-item文本作为单独的元素:

Elements title = doc.getElementsByClass("vacancy-wrapper");
for (Element titles : title) {
    Elements items = titles.getElementsByClass("vacancy-item");
    for (Element item : items) {
        String text = item.text();
        // process text
    }
}

另一种选择是使用Jsoup的select方法:

Elements es = doc.select("div.vacancy-wrapper div.vacancy-item");
for (Element vi : es) {
    String text = vi.text());
    // process text
}

这将选择div属性classvacancy-item属于div class属性vacancy-wrapper的所有{{1}}元素。< / p>