2014-10-03 109 views
0

嗨我想要標籤中的所有文本,但在該td標籤中有多個子標籤。標籤之間的文本包括lxml中標籤內兒童的文字

>>>import urllib2 
>>>from lxml import etree 
>>>import lxml 
>>>site = "http://racing.racingnsw.com.au/InteractiveForm/HorseAllForm.aspx?HorseCode=ODA0ODQ0MTUy&src=horsesearch" 
>>>req = urllib2.Request(site) 
>>>page = urllib2.urlopen(req) 
>>>content = page.read() 
>>>root = etree.HTML(content) 
>>>s = root.xpath('//*[@id="info-container"]/table[2]/tr[%s]/td[2]/text()'%'34') 
>>>s 
[' 1800m Good3 PETER YOUNG STK Group 2 $222,000 ($134,000) ', ' 59kg Barrier 5 Rtg 118 ', ' 2nd ', ' 59kg, 3rd ', ' 59kg 1:50.09 (600m 34.92), 0.1L, [email protected], [email protected], $2/$2.15/$2.15'] 

我想要兒童標籤的文本以及td標籤,但我目前的lxml不會爲我做這個。 相反,我希望看到的:

['RAND 31Jan14', ' 1300m Dead BT-4UEGOPN $000 ', 'Tommy Berry', ' 0kg Barrier 0 ', ' 1st ', 'Glencadam Gold (IRE)', ' 0kg, 3rd ', 'The Offer (IRE)', ' 0kg 1:20.90, 1L ', '\n'] 

或字符串,並加入該列表,它是更優選的表示:

'RAND 31Jan14 1300m Dead BT-4UEGOPN $000 Tommy Berry 0kg Barrier 0 1st Glencadam Gold (IRE) 0kg, 3rd The Offer (IRE) 0kg 1:20.90, 1L' 

我一直在使用etree.tostring(XPath中,方法=「TEXT嘗試「)並環顧文檔,但沒有運氣

我想專門在lxml中工作,所以請不要使用其他庫,如美麗的湯。乾杯

回答

3

text屬性只返回該元素的文本,但 的text_content method返回包含在一個元素所有文字或其子女

import urllib2 
import lxml.html as LH 

site = "http://racing.racingnsw.com.au/InteractiveForm/HorseAllForm.aspx?HorseCode=ODA0ODQ0MTUy&src=horsesearch" 
req = urllib2.Request(site) 
page = urllib2.urlopen(req) 
root = LH.parse(page) 
for td in root.xpath('//*[@id="info-container"]/table[2]/tr[33]/td[2]'): 
    print(td.text_content()) 

產生

RAND 31Jan14 1300m Dead BT-4UEGOPN $000 Tommy Berry 0kg Barrier 0 1st Glencadam Gold (IRE) 0kg, 3rd The Offer (IRE) 0kg 1:20.90, 1L