2010-07-22 15 views
0

我正在写一个Java程序,它为链接刮取一个网页,然后将它们存储在数据库中。虽然我有问题。使用的HtmlUnit,我写了下面:Xpath - 如何获取元素之间包含的数据,而不是元素本身

page.getByXPath("//a[starts-with(@href, \"showdetails.aspx\")]"); 

它返回正确的锚元素,但我只希望包含在href属性,而不是整个事情的实际路径。我怎么能做到这一点,进一步,我怎么能得到节点之间包含的数据:

<a href="">I need this data, too.</a> 

在此先感谢!

回答

1

第(获得HREF)

page.getByXPath("//a[starts-with(@href, \"showdetails.aspx\")]/@href"); 

第二(获取文本)

page.getByXPath("//a[starts-with(@href, \"showdetails.aspx\")]/text()"); 
+0

感谢您的快速响应。这些将返回以下内容:[DomAttr [name = href value = showdetails.aspx?id = 19409709&rn = 0&pi = 0&ref = search],而我只需要该值。如果这是不可能的,我怎样才能从返回的数组对象访问值? – 2010-07-22 13:45:19

+0

请参阅edit和lemme,了解您是否在寻找。 XPath函数text()将返回节点内容(无论是属性还是元素) – dkackman 2010-07-22 13:48:36

+0

预编辑比编辑更接近我需要的内容,编辑返回一个空括号结果[],而预编辑 基本上,我认为你一开始是对的,但我不确定如何访问这些数据。我的目标是使用这个来取消页面上的链接,然后循环访问链接并获取后续页面通过链接路径,为每个链接调用page.getByXPath()多次 对不起,如果这是令人困惑 – 2010-07-22 14:03:09

0

我认为getByXPath是使用XPath.evaluate由你写的效用函数?要获得字符串值,您可以使用xpath.evaluate(expression, object)xpath.evaluate(expression, object, XMLConstants.STRING)

或者,您可以通过评估“// a [starts-with(@href,\”showdetails.aspx \“)]/@ href”返回的属性节点上调用getNodeValue()

相关问题