索引超出范围错误:使用硒迭代多个网页上的元素列表中的页面点击

时间:2019-04-06 21:12:46

标签: python selenium range

我正在使用Selenium来遍历网站连续页面上的元素列表。这些元素都具有相同的类名。

这是我的代码:

#set up driver
driver = webdriver.Chrome(executable_path='/Applications/chromedriver')

#set variable for webpages to be iterated over
page = 'https://www.bandsintown.com/?came_from=257&page='
urlBucket = []
for i in range (0,3):
    uniqueUrl = page + str(i)
    urlBucket.append(uniqueUrl)

#  iterate over urls    
for i in urlBucket:
    drivers = driver.get(i)
    allelements = len(driver.find_elements_by_class_name('eventList-5e5f25ca'))
    for index in range((allelements)-1):
        driver.find_elements_by_class_name("eventList-5e5f25ca")[index].click()

    print allelements

这给我一个IndexError: list index out of range错误。试图找出原因,因为我已经将范围设置为元素列表的长度减去1。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

当您第一次单击"value" in df["Column"].values 元素时,将打开新页面,其中没有任何具有 import numpy as np import sympy as sp from sympy import Symbol x = Symbol('x') integral = sp.integrate((1 + np,cos(np.pi * x))**2, (x, -1, 1)) 类的元素。 在eventList-5e5f25ca行中收到错误消息,因为元素列表为空,并且尝试单击索引为1的元素。

如果要获取所有事件,请先收集链接,然后在单独的循环中打开它们:

eventList-5e5f25ca

您还可以通过点击查看全部按钮来避免使用driver.find_elements_by_class_name("eventList-5e5f25ca")[index]循环。
如果您的目标是刮取数据而不进行测试,则可以使用刮取库(例如等)来加快处理速度。使用简单的请求,所有数据都以json格式出现。