我正在使用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。任何帮助表示赞赏!
答案 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]
循环。
如果您的目标是刮取数据而不进行测试,则可以使用刮取库(例如requests,beautifulsoup,scrapy等)来加快处理速度。使用简单的请求,所有数据都以json格式出现。