Jsoup поддерживает xpath? - PullRequest
       8

Jsoup поддерживает xpath?

32 голосов
/ 17 августа 2011

Идет работа над добавлением поддержки xpath в jsoup https://github.com/jhy/jsoup/pull/80.

  • Это работает?
  • Как я могу это использовать?

Ответы [ 2 ]

11 голосов
/ 01 августа 2014

JSoup пока не поддерживает XPath , но вы можете попробовать XSoup - "Jsoup with XPath" .

Вот пример, процитированный с сайта Github проектов ( ссылка ):

@Test
public void testSelect() {

    String html = "<html><div><a href='https://github.com'>github.com</a></div>" +
            "<table><tr><td>a</td><td>b</td></tr></table></html>";

    Document document = Jsoup.parse(html);

    String result = Xsoup.compile("//a/@href").evaluate(document).get();
    Assert.assertEquals("https://github.com", result);

    List<String> list = Xsoup.compile("//tr/td/text()").evaluate(document).list();
    Assert.assertEquals("a", list.get(0));
    Assert.assertEquals("b", list.get(1));
}

Там вы также найдете список функций и выраженийXPath, поддерживаемый XSoup.

1 голос
/ 02 ноября 2015

Пока нет, но проект JsoupXpath сделал это. Например,

String xpath="//div[@id='post_list']/div[./div/div/span[@class='article_view']/a/num()>1000]/div/h3/allText()";
String doc = "...";
JXDocument jxDocument = new JXDocument(doc);
List<Object> rs = jxDocument.sel(xpath);
for (Object o:rs){
    if (o instanceof Element){
        int index = ((Element) o).siblingIndex();
        System.out.println(index);
    }
    System.out.println(o.toString());
}
...