计算网页中 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 each
中 td
的数量,以便动态生成 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
您好,有以下代码:
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 each
中 td
的数量,以便动态生成 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