Python-Selenium table-scraper 只返回第一行

Posted

技术标签:

【中文标题】Python-Selenium table-scraper 只返回第一行【英文标题】:Python-Selenium table-scraper only returns first row 【发布时间】:2021-12-24 05:39:00 【问题描述】:

我正在尝试从带有 selenium 的表中提取信息。

我得到了行:

rows = driver.find_elements_by_xpath('//tbody/tr')

我正在尝试在该行中获取两个特定的单元格:

for r in rows:
    diccionario["property1"] = driver.find_element_by_xpath(xpath).text
    diccionario["property2"] = driver.find_element_by_xpath(xpath).text

with open("bbdd.json", "a", encoding="utf-8") as bd:
    json.dump(diccionario, bd, ensure_ascii=False, indent=4)

但是,它只会返回第一行的信息(重复的次数与行数相同)

有没有办法“强制”代码找到我们当前在 for 循环中迭代的行中的元素?

代码

所有的 trs(行)代码看起来都一样。

我需要的 tds/cells 是前两个(不同行中的每个 td 的类看起来都一样)。

【问题讨论】:

没有url或者html代码很难帮你 @Frenchy 我将编辑问题并提供 html,因为除非您有帐户,否则无法访问该网站(注册需要几天时间...) 这意味着我们无法重现该问题,也无法真正帮助您。在任何情况下,您都可以尝试使用pandas:df = pd.read_html(driver.page_source) 加载表格,然后将表格导出到json 很遗憾听到这个消息。我明白了。我会尝试找到一种方法以某种方式索引行的“孩子”并解决这个问题。非常感谢! 建议你从检查中复制所有表并复制 hml 代码..不是图片 【参考方案1】:

我专注于尝试访问单元格本身。但是,我改变了主意,尝试从“webelement parent”(行本身)获取内容。

该行的 text 属性包含我需要的信息。

唯一的问题是我必须解析一些文本(这并不难)。所以最后我不需要访问不同的 tds。

【讨论】:

以上是关于Python-Selenium table-scraper 只返回第一行的主要内容,如果未能解决你的问题,请参考以下文章

python-selenium自动化测试网页

python-selenium自动化测试网页

初始化 selenium webdriver 时如何修复 python-selenium 错误“连接被拒绝”?

python-selenium -- 文件上传操作

python-Selenium库的详解

python-selenium -- 弹出框处理