2010-08-12 28 views
0

我正在做一些页面的抓取工作,我很好地获取了大多数字段,但是遇到了一些地址问题。LXml Xpath处理多行字段

<address> 
    56 South Ave 
    <br> 
    Miami, FL 33131 
    <br> 
</address> 

地址= myWebPage.xpath( “// DIV [包含(@类, 'rightcol')] //地址”)

我能得到的第一线,56南大街,使用以上代码。但我无法得到这个城市,州,邮编。我将如何更改代码以获取完整地址?

回答

2
//div[contains(@class,'rightcol')]//address/text()[1] 

选择的address第一个文本节点孩子:

" 
    56 South Ave 
    " 

//div[contains(@class,'rightcol')]//address/text()[2] 

选择的address第二个文本节点孩子:

"  
    Miami, FL 33131  
    " 

//div[contains(@class,'rightcol')]//address/text() 

选择的address这两个文本节点孩子。

+0

非常感谢Dmitre。有用。 对于你的另一个问题: 尽管当我选择节点1或节点2时,我得到了良好的结果,但我意识到,如果我/ /地址/文本(),我的结果提前终止。我只有3个结果,而有10个孩子的地址。 这可能是由于地址中存在额外的非字母数字字符。我不确定。我通常会做一些正则表达式解析,但不知道如果我可以在xpath函数内做到这一点。您通常如何处理多行数据以确保结果良好? – DevX 2010-08-12 19:49:15

+0

@DevX:'// address/text()'选择* address *元素的* immediate *子元素的所有文本节点。如果您需要任何“地址”节点的所有文本节点*后代,请使用:// // address // text()'。 – 2010-08-12 20:14:55