【问题标题】:Java : HTML ParsingJava:HTML解析
【发布时间】:2011-06-04 14:14:44
【问题描述】:

我的 HTML 内容如下所示。我在这里寻找的标签是"img src""!important"。 Java 是否提供任何 HTML 解析技术?

<fieldset>
<table cellpadding='0'border='0'cellspacing='0'style="clear :both">
<tr valign='top' ><td width='35' >
<a href='http://mypage.rediff.com/android/32868898'class='space' onmousedown="return
 enc(this,'http://track.rediff.com/clickurl=___http%3A%2F%2Fmypage.rediff.com%2Fandroid%2F3 868898___&service=mypage_feeds&clientip=202.137.232.117&pos=0&feed_id=12942949154d255f839677925642&prc_id=32868898&rowid=2064549114')" >
<div style='width:25px;height:25px;overflow:hidden;'>
<img src='http://socialimg04.rediff.com/image.php?uid=32868898&type=thumb'  width='25'  vspace='0'  /></div></a></td> <td><span>
<a href='http://mypage.rediff.com/android/32868898'  class="space" onmousedown="return enc(this,'http://track.rediff.com/click?url=___http%3A%2F%2Fmypage.rediff.com%2Fandroid%2F32868898___&service=mypage_feeds&clientip=202.137.232.117&pos=0&feed_id=12942949154d255f839677925642&prc_id=32868898&rowid=2064549114')" >Android </a> </span><span style='color:#000000
!important;'>android se updates...</span><div class='divtext'></div></td></tr><tr><td height='5' ></td></tr></table></fieldset><br/>

【问题讨论】:

  • @c0mrade 他在标题、问题和标签中说Java。
  • @marcog 人们确实经常将这两者混为一谈,所以我只是仔细检查一下没有伤害

标签: java html-parsing


【解决方案1】:
String value = Jsoup.parse(new File("d:\\1.html"), "UTF-8").select("img").attr("src");
System.out.println(value); //http://socialimg04.rediff.com/image.php?uid=32868898&type=thumb
System.out.println(Jsoup.parse(new File("d:\\1.html"), "UTF-8").select("span[style$=important;]").first().text());//android se updates...

【讨论】:

  • 重要部分请澄清问题
  • 有一个重要的标签,其中包含一个文本,我需要获取它。
  • 我在你给的html中看不到任何important标签
【解决方案2】:

试试NekoHtml。这是 HtmlUnit 等各种高级测试框架使用的 HTML 解析库。

NekoHTML 是一个简单的 HTML 扫描器和标签平衡器,它使应用程序程序员能够解析 HTML 文档并使用标准 XML 接口访问信息。解析器可以扫描 HTML 文件并“修复”人类(和计算机)作者在编写 HTML 文档时所犯的许多常见错误。 NekoHTML 添加缺少的父元素;自动关闭带有可选结束标签的元素;并且可以处理不匹配的内联元素标签。

【讨论】:

    【解决方案3】:

    我使用了jsoup - 这个库有很好的选择器语法 (http://jsoup.org/cookbook/extracting-data/selector-syntax),对于您的问题,您可以使用如下代码:

    File input = new File("input.html");
    Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
    
    Elements pngs = doc.select("img[src$=.png]");
    

    【讨论】:

    • 对于“重要”,使用以下代码:doc.getElementsByAttributeValueMatching(String key,String regex)。在您的情况下,键是“style”(span style="... !important"),正则表达式是“(!important)”
    【解决方案4】:

    我喜欢使用 Jericho:http://jericho.htmlparser.net/docs/index.html

    对格式不正确的 html、导致不可用位置的链接等无害。

    他们的页面上有很多示例,您只需获取所有 IMG 标签并分析其属性以提取符合您需求的那些。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2013-02-09
      • 2016-02-24
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2012-05-21
      相关资源
      最近更新 更多