2010-08-12 61 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