如何使用Jsoup解析HTML

5
我正在尝试提取“了解您的拖拉机”和“壳牌石油公司.1955年”?请注意,这只是整个代码的一部分,并且有多个H2 / H3标签。我想从所有的H2和H3标签中获取数据。
以下是HTML代码:http://i.stack.imgur.com/Pif3B.png 我现在的代码是:
    ArrayList<String> arrayList  = new ArrayList<String>();
    Document doc = null;
 try{

     doc = Jsoup.connect("http://primo.abdn.ac.uk:1701/primo_library/libweb/action/search.do?dscnt=0&scp.scps=scope%3A%28ALL%29&frbg=&tab=default_tab&dstmp=1332103973502&srt=rank&ct=search&mode=Basic&dum=true&indx=1&tb=t&vl(freeText0)=tractor&fn=search&vid=ABN_VU1").get();
     Elements heading = doc.select("h2.EXLResultTitle span"); 

     for (Element src : heading) {
            String j = src.text();
            System.out.println(j);  //check whats going into the array 
            arrayList.add(j);
     }

我该如何提取“Know your tractor”和“Shell Petroleum Company.1955”?谢谢您的帮助!

我应该如何提取“认识你的拖拉机”和“壳牌石油公司.1955年”? - Tbuermann
现在这才是我所说的一个好问题。+1 顺便说一句,最好粘贴HTML的文本内容(在代码标签中),而不是链接到图像或截图。 - Andrew Thompson
使用BalusC的答案后,似乎仍未返回任何内容。当我查看HTML页面的源代码时,可以看到所有信息,但是当我println 'doc'时,它不存在。这是因为JavaScript的原因吗? - Tbuermann
1个回答

3
您的选择器只选择位于 <h2 class="EXLResultTitle"> 内部的 <span> 元素,而实际上您需要的是那些 <h2> 元素本身。因此,请从选择器中删除 span
Elements headings = doc.select("h2.EXLResultTitle");

for (Element heading : headings) {
    System.out.println(heading.text());
}

根据所学到的经验,你应该能够自己找到 <h3 class="EXLResultAuthor"> 的选择器。

参见:


使用BalusC的答案后,似乎仍未返回任何内容。当我查看HTML页面的源代码时,可以看到所有信息,但是当我println 'doc'时,它不存在。这是因为JavaScript的原因吗? - Tbuermann
显然,请求的URL是错误的或者响应取决于其他请求因素(参数、Cookie等)。 使用浏览器开发工具验证它们。 - BalusC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接