2016-01-22 57 views
2

我刮包含表的網頁,我可以提取我感興趣的是這樣的鏈接:如何使用scrapy選擇表格?

response.xpath('//*[@id="mw-content-text"]/table[1]/tr/td[1]/a/@href').extract() 

現在,有3個或多個表,如果我寫這樣:

response.xpath('//*[@id="mw-content-text"]/table/tr/td[1]/a/@href').extract() 

我得到的所有表的數據,但如果我只想要ñ表,有沒有辦法得到它沒有使用N- expresions,東西 這樣的:

response.xpath('//*[@id="mw-content-text"]/table[1:n]/tr/td[1]/a/@href').extract() 

回答

1

假設n是一個整數,您可以在XPath查詢中使用position()如下:

'//*[@id="mw-content-text"]/table[position() <= {}]/tr/td[1]/a/@href'.format(str(n)) 

要求這將從第一n表中選擇數據。

for i in range(5): 
    response.xpath('//*[@id="mw-content-text"]/table[{}]/tr/td[1]/a/@href'.format(str(i))).extract() 
+0

太好了,我在哪裏可以看到,函數的文檔:

或者,您可以按如下方式使用一個循環? –

1
'//*[@id="mw-content-text"]/table[position()<n]/tr/td[1]/a/@href'