【问题标题】:How I can get all items of table with Selenium (Python3 )?如何使用 Selenium (Python3) 获取所有表格项?
【发布时间】:2019-02-02 18:13:49
【问题描述】:

我想从页面https://www.oddsportal.com/soccer/england/premier-league/wolves-newcastle-utd-nNNqedbR/的表格中获取信息。

这是一个表格,它会自动更改她的项目(mb with js, ajax)。

如果我编写以下代码,我会收到错误 'HtmlElement' object has no attribute 'find_element_by_xpath'

url = 'https://www.oddsportal.com/soccer/england/premier-league/wolves-newcastle-utd-nNNqedbR/'

options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(chrome_options=options)
driver.get(url)

html = lxml.html.fromstring(driver.page_source)
tbody = html.find_element_by_xpath('//*[@id="odds-data-table"]/div[1]/table/tbody')
trows = tbody.find_elements_by_tag_name("tr")

【问题讨论】:

    标签: python selenium parsing python-3.7


    【解决方案1】:

    lxml (大概)是lxml 库,所以你的html 对象是它的一个实例。正如例外所说 - 它没有 find_element_by_xpath() 和 tag_name 方法,它们在 selenium 库中。

    因此,不要使用html 对象,而是使用driver

    tbody = driver.find_element_by_xpath('//*[@id="odds-data-table"]/div[1]/table/tbody')
    trows = tbody.find_element_by_tag_name("tr")
    

    【讨论】:

    • 在输出我得到行列表: [, .. . 这不是我所期望的。我可以继续使用它来提取单元格的内容吗?
    • 您正在打印tbodytrows?它们是 webelement 对象,因此您可以看到;如果您想获取元素的文本,请尝试使用tbody.text
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 2019-09-08
    • 2019-11-22
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2022-08-14
    相关资源
    最近更新 更多