首页 > 解决方案 > 使用 python selenium 获取标签的子节点数

问题描述

我试图计算某个 div 标签拥有的孩子的数量。我已经以不同的方式来做这件事,但没有一个成功。通过期待元素,我发现我希望计算其子元素的元素的 xpath 如下:

//*[@id="myShipments"]/div[1]/div/div/div[2]

该元素当前有 25 个以下类型的子元素:

//*[@id="myShipments"]/div[1]/div/div/div[2]/div[0]
//*[@id="myShipments"]/div[1]/div/div/div[2]/div[1]
//*[@id="myShipments"]/div[1]/div/div/div[2]/div[2]
...

使用 find_elements_by_xpath 函数我做了以下

numberOfChildren = driver.find_elements_by_xpath('//*[@id="myShipments"]/div[1]/div/div/div[2]') // sets it to 1
numberOfChildren = driver.find_elements_by_xpath('//*[@id="myShipments"]/div[1]/div/div/div[2]//*') // sets it to 541, I assume it also counts the children of the children
numberOfChildren = driver.find_elements_by_xpath('//*[@id="myShipments"]/div[1]/div/div/div[2]/div[0-9]') // sets it to 0, I assume the last div is incorrect

这是表格的完整 HMTL:https ://codeshare.io/5wJ0Vp

这是简化版:

桌子

如何计算父 div(myShimpents__shipmentsTable--tableBody div)拥有的子项(shipmentsTable__tableBody--row div)的数量?是否可以使用正则表达式来获取 xpath 中最后一个 div 的所有 div,如果可以,如何?

标签: pythonseleniumweb-scraping

解决方案


试试下面的方法。

使用CSS 选择器

driver.find_elements_by_css_selector('div.myShipments__shipmentsTable--tableBody div.shipmentsTable__tableBody--row')

使用xpath

driver.find_elements_by_xpath('//div[@class="myShipments__shipmentsTable--tableBody"]//div[@class="shipmentsTable__tableBody--row"]')

推荐阅读