1

我正在编写一个应用程序,它接收页面的 HTML 代码并提取页面的某些元素(例如表格)并返回这些元素的 html 代码。我试图在 java 中使用 Mozilla 解析器来简化页面导航,但我无法提取所需的 html 代码。

也许我的整个方法是错误的,也就是 Mozilla 解析器,所以如果有更好的解决方案,我愿意接受建议

String html = ///what ever the code is

MozillaParser p = // instantiate parser


// pass in html to parse which creates a dom object
Document d = p.parse(html);

// get a list of all the form elements in the page
NodeList l =  d.getElementsByTagName("form");

// iterate through all forms
for(int i = 0; i < l.getLength(); i++){

    // get a form
    Node n = l.item(i);

    // print out the html code for just this form.
    // This is the portion I haven't figured out.
    // I just made up the innerHTML method, but thats
    // the end result I'm desiring, a way to just see
    // the html code for a particular node
    System.out.println( n.innerHTML() );
}
4

3 回答 3

1

我已经使用 htmlcleaner ( http://htmlcleaner.sourceforge.net/ ) 取得了一定程度的成功:它非常快,并且可以选择让您确定它应该有多“严格”。不过,出于所有显而易见的原因(通过 REST 或其他形式的 API 公开的数据往往更可靠、合法、更容易解析等),我尽量避免 html 抓取。

于 2009-09-29T20:15:13.660 回答
1

Mozilla 解析器在这里似乎有点矫枉过正,我已经成功地使用了Jericho来完成你正在做的事情。

于 2009-09-29T20:20:50.523 回答
0

我在 Mozilla 平台上用 Javascript 编写了一个 HTML 包装器。我将代码打包到 Firefox 浏览器的两个扩展中。一个,称为 MetaStudio,是一种数据模式定义工具,它对网页进行语义注释。另一种称为 DataScraper,是一种从网页中提取数据片段并将其格式化为 XML 文件的工具。

所有源代码都是可读的。请到http://www.gooseeker.com下载。

于 2009-10-01T07:53:05.690 回答