【发布时间】:2019-11-20 17:16:36
【问题描述】:
我正在尝试从 HADOOP Jira 问题站点 (https://issues.apache.org/jira/projects/HADOOP/issues/HADOOP-16381?filter=allopenissues) 中提取有关问题创建日期的信息
正如您在这个Screenshot 中看到的,创建日期是时间标签之间的文本,其类是实时戳记(例如<time class=livestamp ...> 'this text' </time>)
所以,我尝试用下面的代码解析它。
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class CreatedDateExtractor {
public static void main(String[] args) {
String url = "https://issues.apache.org/jira/projects/HADOOP/issues/HADOOP-16381?filter=allopenissues";
Document doc = null;
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Elements elements = doc.select("time.livestamp"); //This line finds elements that matches time tags with livestamp class
System.out.println("# of elements : "+ elements.size());
for(Element e: elements) {
System.out.println(e.text());
}
}
}
我希望提取创建日期,但实际输出是 元素数:0。
我发现这有点不对劲。因此,我尝试使用下面的代码从那一侧解析整个 html 代码。
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class CreatedDateExtractor {
public static void main(String[] args) {
String url = "https://issues.apache.org/jira/projects/HADOOP/issues/HADOOP-16381?filter=allopenissues";
Document doc = null;
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Elements elements = doc.select("*"); //This line finds whole elements in html document.
System.out.println("# of elements : "+ elements.size());
for(Element e: elements) {
System.out.println(e);
}
}
}
我将chrome devtools中的html代码和我解析的html代码一一对比。然后我发现它们是不同的。
你能解释一下为什么会发生这种情况,并给我一些如何提取创建日期的建议吗?
【问题讨论】:
标签: java html google-chrome-devtools jsoup html-parsing