2017-04-17 62 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