我遇到NekoHTML问题 我尝试解析HTML页面,其中一些最终标签具有类型类的属性。这些属性必须具有多个值,例如class =' ui-dialog ui-widget ui-widget-content ui-corner-all ui-draggable'问题是使用NekoHtml,只提取类的第一个值然后:class =' ui-dialog'
我使用的代码如下,但我无法理解为什么会出现这种行为,以及我是否可以更改它。
URL newURL = new URL(url);
Reader source = new BufferedReader(new InputStreamReader(newURL.openStream(), "UTF-8"));
doc = parseHTML(source);
修改
public Document parseHTML(Reader in) throws SAXException, IOException {
DOMParser parser = new DOMParser();
parser.setFeature("http://xml.org/sax/features/namespaces", false);
parser.setFeature("http://cyberneko.org/html/features/balance-tags", true);
XMLDocumentFilter[] filters = { new Purifier() };
parser.setProperty("http://cyberneko.org/html/properties/filters", filters);
parser.parse(new InputSource(in));
return parser.getDocument();
}
页面示例为http://www.123premier.com/used-cars/2257/hyundai-matrix/#
使用xpath表达式// A [@class =' addthis_button_facebook at300b']它找不到任何东西。但是,如果我在firefox中使用firebugs,它会给我正确的节点。 xpath表达式的代码如下
XPath xPath = XPathFactory.newInstance().newXPath();
DTMNodeList result = (DTMNodeList) xPath.evaluate("//A[@class='addthis_button_facebook at300b']", doc, XPathConstants.NODESET);
非常感谢。