Элемент Jsoup пуст при выборе по классу - PullRequest
0 голосов
/ 01 апреля 2019

HTML, который я анализирую, выглядит следующим образом:

<article id="1234" class="bg-post ">
....
</article>

Когда я пытаюсь разобрать его с помощью jsoup, я получаю пустую строку

Elements e = doc.select("article[class=bg-post ]");

ИЛИ с помощью

Elements e = doc.getElementsByClass("bg-post ");

Размер e равен 0, а e.toString() пуст.

Это как-то связано с пробелом в конце имени класса, какЯ решаю эту проблему.

Спасибо.

РЕДАКТИРОВАТЬ:

Также попытался поиск без пробела

Elements e = doc.select("article[class=bg-post]");

Все еще та же проблема.

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Это ошибка, затрагивающая JSoup версии до 1.8.2

. Вы не можете просто выбирать элементы по значению атрибутов, если они не являются нормализованными в пространстве.

Если у вас действительно естьчтобы придерживаться какой-то старой JSoup версии, вы можете обойти ее менее эффективным способом:

document.select(".bg-post").select("article")
0 голосов
/ 01 апреля 2019

Для меня

Elements e = doc.select("article[class=bg-post ]");

отлично работает!

Вот мой код:

Document document = Jsoup.connect("http://localhost:8080/index.html").get();
Elements select = document.select("article[class=bg-post ]");

Результат: Result

html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<article id="1234" class="bg-post ">
  <div>test1</div>
  <div>test2</div>
  <div>test3</div>
</article>
</body>
</html>

и зависимость:

<dependency>
   <groupId>org.jsoup</groupId>
   <artifactId>jsoup</artifactId>
   <version>1.11.3</version>
</dependency>
...