【问题标题】:Want to read a tag data using Selenium想要使用 Selenium 读取标签数据
【发布时间】:2019-11-24 01:12:56
【问题描述】:

我想使用 Selenium 阅读的表格位于本页底部https://dps.psx.com.pk/

HTML Source I would like read

除了最左边的列之外,我正在完美地阅读表格的所有行。这是我的代码

for row in tableFin.find_elements_by_xpath(".//tr"):
    print(row.find_elements_by_xpath("//td/a[@class='tbl__symbol']")) # This line of code is not working
    print([td.text for td in row.find_elements_by_xpath(".//td[@class='right']")])

有人可以帮忙解决一下吗

【问题讨论】:

  • 欢迎来到 StackOverflow。将您的 HTML 代码的最小版本放在问题中,而不是作为图像。请查看writing the perfect question
  • 可能会连续读取所有td(不仅仅是@class='right')。如果您只需要第一列,则仅使用element 获取行中的第一个td,最后不使用s - find_element_by_xpath - 或使用[0] 获取列表中的第一个元素。
  • 你在 xpath 的开头忘记了. - 也许它会造成问题。
  • 您是否收到错误消息或错误结果?有问题地描述你的代码有什么问题。质疑预期的结果和你得到的。或者甚至更好地放置我们可以运行以查看问题的代码。
  • @furas 谢谢...您的代码表明它返回可索引列表。是的,我错过了我工作的那个点

标签: python html selenium html-table


【解决方案1】:

如果我只使用[1:] 跳过带有标题的第一行,我可以毫无问题地阅读第一列。

我还必须在xpath 中添加缺少的.

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://dps.psx.com.pk/')

last_table = driver.find_elements_by_xpath("//table")[-1]

for row in last_table.find_elements_by_xpath(".//tr")[1:]:
    print(row.find_element_by_xpath(".//td/a[@class='tbl__symbol']").text)
    print([td.text for td in row.find_elements_by_xpath(".//td[@class='right']")])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多