2011-12-01 109 views
0

我對XPath非常陌生,無法找出其他解決方案。用於選擇多個HTML`a`元素的XPath

我試圖做的是選擇所有給定td(例如td[2])內a元素和運行的語句來輸出包含a元素中的文本。

的源代碼:

multiple = HTML.ElementFromURL(url).xpath('//table[contains(@class, "mg-b20")]/tr[3]/td[2]/*[self::a]') 

for item in multiple: 
    Log("text = %s" %item.text) 

在我怎樣才能使這項工作的任何指針?

謝謝!

+0

你使用的是什麼庫/框架?我無法從你的源代碼中找出它。 – jsalonen

回答

3

你需要的XPath是八九不離十:

//table[contains(@class, "mg-b20")]/tr[3]/td[2]//a 

我不知道你正在使用的圖書館,但我懷疑它是Plex Parsekit API。如果是這樣,parsekit使用lxml.etree作爲其底層庫,所以你甚至可以進一步簡化代碼:

element = HTML.ElementFromURL(url) 
alltext = element.xpath('string(//table[contains(@class, "mg-b20")]/tr[3]/td[2]//a)') 

for item in alltext: 
    Log("text = %s" % item); 

這甚至會照顧的角落情況下,像混合內容,例如這個:

<a href="#">I am anchor text <span>But I am too and am not in Element.text</span> and I am in Element.tail</a> 
+0

謝謝!終於得到了這個工作。是的,我正在爲Plex創建代理。它很難找到像我這樣的初學者的文檔。非常感謝。 –