【问题标题】:HTML parse in Java?Java中的HTML解析?
【发布时间】:2014-08-04 21:13:32
【问题描述】:

我正在尝试解析(使用 jsoup)来自网站的一些特定文本,但它对我不起作用。 LINK TO SITE

这是页面右上角我感兴趣的红色文本中的数字“43”。

这是我尝试过的:

String test;

public void scan(String url) throws Exception {

    Document document = Jsoup.connect(url).get();        
    Elements votes = document.select("#malicious-votes .pull-right");
    test = votes.text();
}

public int returnVotes(){
    return test();
}

~~~

public static void main(String[] args) throws Exception {

    Scan_VirusTotal virustotal = new Scan_VirusTotal();     
    virustotal.scan("https://www.virustotal.com/sv/url/cbf2d00f974d212b6700e7051f8b23f2038e876173066af41780e09481ef1cdd/analysis/1407146081");      
    System.out.println(virustotal.returnVotes());

这不打印任何内容。其他元素在这种精确方法下工作得很好,所以我真的很困惑为什么这段特定的文本不会解析。

想法?谢谢。

编辑 - 根据要求从页面添加一些 HTML:

<div style="display:block" class="pull-right value text-red" id="malicious-votes">44</div>

【问题讨论】:

  • 请提供一些示例 HTML,而不是发布指向相关网站的链接。
  • 仅链接到该页面并不会显示您实际查看的来源,因此您应该始终包含代码而不是仅链接。
  • 好吧,我解释了我指的是哪一部分。如果您单击检查代码,它将直接带您进入相关代码。我没有包括的原因是因为树很大,所以我不想剪掉任何东西:)

标签: java html parsing jsoup


【解决方案1】:

尝试改用这个:

Elements votes = document.select("#malicious-votes");
test = votes.text();

我在给定页面的浏览器控制台中尝试了这个$("#malicious-votes .pull-right"),给了我一个空数组。但是 $("#malicious-votes") 给了我投票 div,它本身有 pull-right 类。

【讨论】:

    【解决方案2】:

    你的选择器应该是:

    "#malicious-votes",而不是"#malicious-votes .pull-right"

    "#malicious-votes .pull-right" 选择类为pull-right 且是#malicious-votes 的后代的任何元素。你想要的是#malicious-votes 元素本身。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2011-03-24
      • 2010-09-19
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多