【问题标题】:Unable to extract table data using python selenium无法使用 python selenium 提取表数据
【发布时间】:2021-01-07 04:50:02
【问题描述】:

我遇到的问题是最后的打印语句返回 NONE 。我想将值存储在每行中的每 6 个位置,这很好并且工作正常。 但是最后的 print(self.mystr) 并没有给我一个价值。

请帮助/建议。

我登录该网站并使用它。试图自动化一些事情。

def click_single_tractor(self): #dynamically clicks tractor
    sleep(2)
    basecss = '#ctl00_ContentPlaceHolder1_PopupControlTractores_TractorGrid_DXMainTable > tbody > tr'
    cssbase = '#ctl00_ContentPlaceHolder1_PopupControlTractores_TractorGrid_DXHeadersRow > td'

    table_rows = self.driver_web_browser.find_elements_by_css_selector(basecss)
    table_data = self.driver_web_browser.find_elements_by_css_selector(cssbase)

    for index, tr in enumerate(table_rows,1):
        iteratingSelObj = self.driver_web_browser.find_elements_by_css_selector("{}:nth-child({})".format( basecss, str(index)))
        print('table row:',int(index))

        for indx, td in enumerate(table_data,1):
            iterate_td = self.driver_web_browser.find_element_by_css_selector("{}:nth-child({})".format( cssbase, str(indx)))
            print('table data:',int(indx))
            if indx == 6:
                #get value of element
                # add to string ? to get value
                

                self.mystr.append(td.get_attribute('text'))


    print(self.mystr)

我故意显示行和表数据作为自检,它返回适量的数据
7行,每行10个表数据。

网络表格是动态的,因为偶尔会添加一个项目,这就是为什么我动态读取信息的原因,如果我们添加一个项目,我不必弄乱代码。

结果:

表格行:1

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

表格行:2

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

表格行:3

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

表格行:4

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

表格行:5

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

表格行:6

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

表格行:7

表格数据:1 表数据:2 表数据:3 表数据:4 表数据:5 表数据:6 表数据:7 表格数据:8 表数据:9 表格数据:10

[无,无,无,无,无,无,无]

【问题讨论】:

  • 您的问题不完整,请同时发布 HTML sn-p
  • self.mystr.append(td.text) 对我不起作用。还有其他方法可以让我获得这个价值吗?

标签: javascript python python-3.x selenium selenium-webdriver


【解决方案1】:

text 不是 Selenium Web 元素的属性。我们使用 get_attribute 来获取 Web 元素的属性,例如它的类、id 等。基本上你在<div id=..., class=.., whatever=... > 中看到的东西,带有= 符号的单词被称为属性。

要获取 Selenium WebElement 的文本,只需使用 td.text,其中 td 是 Selenium Web Element。

类似的问答可以在here找到。

【讨论】:

  • 感谢您的建议!这是我之前尝试过的其他一些事情,这些事情要么没有运行,要么没有给我想要的答案。这仅打印出第一行表数据,是否有可能此信息受到保护?
  • 第一行不是动态信息。它只是表格数据的标题
  • ['Num.经济”,“数字。经济”,“数字。经济”,“数字。经济”,“数字。经济”,“数字。经济”,“数字。经济']
  • 这些值中的每一个都是每行的第 6 个表数据信息,但它应该是动态的
  • self.mystr.append(td.text) 给出了结果
猜你喜欢
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 2020-02-09
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多