为什么打印Xpath而不是元素内的文本?

时间:2018-09-01 09:05:59

标签: ajax python-3.x selenium-webdriver web-scraping

我想在昨天的网址中抓取一场足球比赛的比赛统计信息:

https://www.flashscore.com/match/8S0QVm38/#match-statistics;0

我已经编写了代码,只是为了让Webdriver选择所需的统计信息并为我打印出来,以便随后查看要使用的统计信息。我的代码是:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

browser = webdriver.Firefox()
browser.get("https://www.flashscore.com/match/8S0QVm38/#match-statistics;0")
print(browser.find_elements_by_class_name("statText--homeValue"))

已打印出一个元素列表,说实话,我不知道这是否是我要找的东西,因为返回的内容没有显示任何内容可以与开发人员工具中的内容进行标识

我正在尝试获取所有数字,如Possession和目标命中率,但print返回这样的xpath列表,其中会话相同但元素始终不同:

[<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="da88ca87-e318-934e-ba75-dca1d652cd37", element="c53f5f3e-2c89-b34c-a639-ab50fbbf0c33")>, 
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="da88ca87-e318-934e-ba75-dca1d652cd37", element="3e422b45-e26d-de44-8994-5f9788462ec4")>, 
<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="da88ca87-e318-934e-ba75-dca1d652cd37", element="9e110a54-4ecb-fb4b-9d8f-ccd1b210409d")>, <

有人知道这是为什么吗,我该怎么做才能获得实际数字?

2 个答案:

答案 0 :(得分:2)

您得到的不是XPath,而是WebElement对象的列表。从每次尝试中获取文字

print([node.text for node in browser.find_elements_by_class_name("statText--homeValue")])

答案 1 :(得分:1)

您已打印了生成器而不是实际内容。为此,您必须对每个元素使用.text。喜欢,

elements = browser.find_elements_by_class_name("statText--homeValue")
for element in elements:
    print(element.text)

您还可以选择Andersson's answer中显示的列表综合方法。

希望这会有所帮助!干杯!