2017-04-17 60 views
0

特定元素我需要檢索從這個網頁這些元素:刮從一個div

Whoscored

考慮我使用webdriver的硒和XPath爲Python。

這個特定的div(黑的)在XPath是referrend爲:

//*[@id="stadium"]/div[2]/div[2]/div[2]/div[9] 

所以我的代碼是:

playID =[] 
dtype = [] 
events = driver.find_elements_by_xpath('//*[@id="stadium"]/div[2]/div[2]/div[2]/div[9]') 

for a in events: 
    dtype.append(a.get_attribute('data-type')) 
    playID.append(a.get_attribute('data-player-id')) 
print(playID) 
print(dtype) 

,但現在看來,它只能從檢索數據的暗格和不是來自孩子。

如何修改我的XPath表達式以獲得所有有趣的數據(圖片中突出顯示的那些紅色)?考慮一些div有一些孩子,而其他人可能有更多或更少,所以它不會幫助指定內部div作爲另一個頁面可能會錯過他們,一般我不知道有多少內部div是在一個特定的(如黑暗的一個)。我希望能夠清楚地解釋我自己。 :)

對不起,我的英語不好,請考慮我不是一個開發人員,這只是爲了好玩,所以原諒壞的編碼。 :)

我想我已經搜索了這個答案,但我還沒有發現任何足夠清晰的適用於我的問題。

+0

您是否正在尋找只屬於匹配的人或DIV的DIV的'data-type'屬性?你的意圖不明確。這顯然是一個統計頁面,我假設公開,鏈接到頁面也會有很大幫助。 – JeffC

回答

0

這通常不是一個好主意,有這樣一個具體的查詢('//*[@id="stadium"]/div[2]/div[2]/div[2]/div[9]')。如果類「玩家琴鍵事件」是獨一無二的,這應該工作:

events = driver.find_elements_by_css_selector("div.player-key-incidents > div") 

這兩個命令找到div的兒童:

events = driver.find_elements_by_xpath('//div[@class="player-key-incidents"]/div') 

可以使用CSS選擇器做類似的事情與類「球員鑰匙事件」。

+0

謝謝@Fernando,實際上您的提案會收集頁面中的所有事件,而不是收集在特定的節點中。不幸的是,它並不是獨一無二的。無論如何,我想我已經找到了一個解決方案,如下所示:'code'div = driver.find_element_by_xpath('// * [@ id =「stadium」]/div [2]/div [2]/div [1]/div '' events = div.find_elements_by_xpath('。// *')'code'然後管理獲得的列表。 – Orwell