Selenium:如何单击具有相同类nam的所有div

2024-10-01 00:30:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在抓取一个站点,它通常有10到12个div具有相同的类名。当单击这些div中的任何一个时,它将转到一个新页面。我想从该页面中获取数据,然后导航回上一页,然后单击下一个div,依此类推。在

但是我不明白当我回到上一页时,我怎么能点击下一个div?在

任何帮助都将不胜感激。在

matches = browser.find_elements_by_class_name('ipo-CompetitionBase ')
index = 0
while index <= len(matches):
    matches[index].click()
    browser.back()
    index += 1

Tags: namedivbrowserindexby站点页面elements
1条回答
网友
1楼 · 发布于 2024-10-01 00:30:24

问题在于,您不能简单地找到所有的div,然后逐个单击它们,因为当您返回到上一页时,先前找到的元素已经“过时”,您需要“重新查找”它们。在

我将维护当前正在单击的div元素的一个索引,每次返回主页面时,我都会在index+1位置单击div元素。继续这样做,直到用完主页上所有的div元素。在

更像是伪代码:

index = 0
while True:
   divs = browser.find_elements_by_class_name('className')

   try: 
       divs[index].click()
   except IndexError:
       break  # no more elements, exit the loop

   # do smth
   # ...

   browser.back()

   index += 1

相关问题 更多 >