我使用HtmlCleaner 2.6.1和Xpath来解析Android应用程序中的html页面。 这里是html页面:
http://www.kino-govno.com/comments/42571-postery-kapitan-fillips-i-poslednij-rubezh
http://www.kino-govno.com/comments/42592-fantasticheskie-idei-i-mesta-ih-obitanija
第一个链接返回文档,没关系。这个地方的第二个链接:
document = domSerializer.createDOM(tagNode);
什么都不返回。
如果你创建一个没有android的简单java项目。一切正常。
以下是代码:
String queries = "//div[starts-with(@class, 'news_text op')]/p";
URL url = new URL(link2);
TagNode tagNode = new HtmlCleaner().clean(url);
CleanerProperties cleanerProperties = new CleanerProperties();
DomSerializer domSerializer = new DomSerializer(cleanerProperties);
document = domSerializer.createDOM(tagNode);
xPath = XPathFactory.newInstance().newXPath();
pageNode = (NodeList)xPath.evaluate(queries,document, XPathConstants.NODESET);
String val = pageNode.item(0).getFirstChild().getNodeValue();
答案 0 :(得分:0)
那是因为HtmlCleaner将第二个HTML页面的段落包装到另一个<div/>
中,所以它不再是直接的孩子了。使用descendent-or-self
- 轴//
代替child
- 轴/
:
//div[starts-with(@class, 'news_text op')]//p