【发布时间】:2010-02-18 10:32:48
【问题描述】:
我正在使用 HTML Parser 开发应用程序。 下面的代码无法获取页面中的整个标签集。 有一些标签被遗漏了,它们的属性和正文也被遗漏了。 请帮我解释为什么会这样......或者建议我其他方式......
URL url = new URL("...");
PrintWriter pw=new PrintWriter(new FileWriter("HTMLElements.txt"));
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
HTMLEditorKit htmlKit = new HTMLEditorKit();
HTMLDocument htmlDoc = (HTMLDocument)htmlKit.createDefaultDocument();
HTMLEditorKit.Parser parser = new ParserDelegator();
HTMLEditorKit.ParserCallback callback = htmlDoc.getReader(0);
parser.parse(br, callback, true);
ElementIterator iterator = new ElementIterator(htmlDoc);
Element element;
while ((element = iterator.next()) != null)
{
AttributeSet attributes = element.getAttributes();
Enumeration e=attributes.getAttributeNames();
pw.println("Element Name :"+element.getName());
while(e.hasMoreElements())
{
Object key=e.nextElement();
Object val=attributes.getAttribute(key);
int startOffset = element.getStartOffset();
int endOffset = element.getEndOffset();
int length = endOffset - startOffset;
String text=htmlDoc.getText(startOffset, length);
pw.println("Key :"+key.toString()+" Value :"+val.toString()+"\r\n"+"Text :"+text+"\r\n");
}
}
}
【问题讨论】:
-
问题太模糊了。举一个示例网站(
http://google.com可能?),请详细说明到底缺少什么。 -
实际上我想提取在线购物网站(如amazon.com)中列出的所有产品的产品名称、价格等信息,我该怎么做???
标签: java screen-scraping