按类选择时,Jsoup元素为空

问题描述 投票:0回答:2

我正在解析的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]");

仍然是同样的问题。

java html jsoup
2个回答
0
投票

这是在JSoup之前影响1.8.2版本的bug

如果元素的值没有正确地进行空间规范化,则不能简单地按属性值选择元素。

如果你真的必须坚持一些旧的JSoup版本,你可以用这种性能较低的方式解决它:

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

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>
© www.soinside.com 2019 - 2024. All rights reserved.