计算网页中 tag_name 的数量(python,selenium)

count numbers of tag_name in a webpage (python, selenium)

您好,有以下代码:

for each in driver.find_elements_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody")
    cell = each.find_elements_by_tag_name('td')[0]
    cell2 = each.find_elements_by_tag_name('td')[1]
    cell3 = each.find_elements_by_tag_name('td')[2]

我的问题是我不知道每个 each 里面到底有多少 td(有时是 3,有时是 15,等等...)。

是否可以检查 for eachtd 的数量,以便动态生成 find_elements_by_tag_name('td')

只是不要通过索引获取它们,使用:

cells = each.find_elements_by_tag_name('td')

那么 cells 将是一个 元素列表 ,您可以在

上调用 len()
print(len(cells))

或切片:

cells[:3]  # gives first 3 elements
cell1, cell2, cell3 = cells[:3]  # unpacking into separate variables

或者,您可以获得每个单元格的文本:

[cell.text for cell in cells]

find_elements_by_tag_name returns 一个列表。在该列表上使用 len() 以获取该标签名称的元素数。此外,与其说 for each,我更建议使用更具描述性的赋值。

table = driver.find_element_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody")
table_rows = table.find_elements_by_tag_name("tr")
for row in table_rows:
    row_cells = row.find_elements_by_tag_name("td")
    num_of_cells = len(row_cells)

通过阅读您的评论,您似乎正在尝试这样做...

for each in driver.find_elements_by_xpath(".//*[@id='ip_market" + market + "']/table/tbody")
    for i in range(0,len(each.find_elements_by_tag_name('td'))
        // you can now use i as an index into the loop through the TDs
        print "do something interesting with i: " + i