2017-03-16 50 views
1

我想獲得在python使用XPath元組列表,例如:獲取元組列表蟒蛇使用XPath

page = requests.get('url') 
tree = html.fromstring(page.content) 
list_a = tree.xpath('//div[@class="a"]/text()') 
list_b = tree.xpath('//div[@class="b"]/text()') 

list_a和list_b應該合併爲一個唯一的列表,以便同指數的各要素形成一個元組。

也許我可以通過操縱這兩個列表來做到這一點,但如果可能的話,我更願意直接調用xpath來獲取元組列表。 XPath中

tree.xpath('//div[@class="a"]/text() | //div[@class="b"]/text()') 
+1

所以你想'拉鍊'? –

+0

是通過操縱兩個列表,但這意味着我做了兩個xpath調用。 – slidefizz

回答

0

使用,或者你可以先取得與元素的列表:

result = tree.xpath('//div[@class="a" or @class="b"]/text()') 

這將產生元素符合兩個約束的一個列表。接下來,我們可以一起zip他們:

result = iter(result) 
result = list(zip(result,result)) 

這確實調用xpath一個,然後使用一些後處理,以獲得元組。請注意,如果兩個<td class="a">標籤出現在<td class="b">標籤之前,它們將被打包到一個元組中。所以重要的是<td class="a"><td class="b">交錯

+0

你能更精確嗎?這將返回一個元組列表,如我所期望的那樣? – slidefizz

1