从div中刮取特定元素

时间:2017-04-17 14:01:42

标签: python xpath selenium-webdriver

我需要从这个页面中检索这些元素:

Whoscored

考虑我正在使用selenium webdriver和XPath for Python。

那个特殊的div(黑暗的一个)在xpath中引用为:

//*[@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)

但似乎,它只从黑暗的div而不是从孩子那里检索数据。

如何修改我的XPath表达式以获取所有有趣的数据(图中突出显示的红色)?考虑一些div有很多孩子,而其他人可能有更多或更少,所以它不会帮助指定内部div,因为另一个页面可能会错过它们,一般来说我不知道​​有多少内部div在特定的一个(如黑暗的)。我希望能够清楚地解释自己。 :)

抱歉我的英语不好,请考虑我不是开发人员,这只是为了好玩,所以请原谅糟糕的编码。 :)

我想我已经搜索过这个答案,但我找不到足够清楚的东西来解决我的问题。

1 个答案:

答案 0 :(得分:0)

拥有这样一个特定的查询( let fbEmail = data["email"] let fbName = data["name"] func prepare(for segue: UIStoryboardSegue, sender: Any?) { let vc = segue.destination as? CreateAccountVC vc!.emailTxt = self.fbName vc!.fullnameTxt = self.fbEmail } )通常不是一个好主意。如果班级"玩家 - 键 - 事件"这是独一无二的,这应该有效:

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

你可以使用CSS选择器做类似的事情:

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

这两个命令是使用类" player-key-events"来查找div的子节点。