按类选择时,Jsoup元素为空

时间:2019-04-01 12:31:21

标签: java html jsoup

我正在解析的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 :(得分:0)

对我

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>

答案 1 :(得分:0)

这是一个影响JSoup之前的1.8.2版本的错误

如果属性未正确进行空间归一化,则不能简单地通过属性值选择元素。

如果您确实必须坚持使用一些旧的JSoup版本,则可以采用这种性能较低的方法来解决它:

document.select(".bg-post").select("article")