首页 > 解决方案 > 如何迭代和获取动态列表?

问题描述

几天以来,我努力理解为什么我的代码返回“IndexError”,我会在我的列表中获得 150 个 Instagram 点赞,所以我最近发现,当我滚动到点赞弹出窗口时,它会div根据我的滚动条生成一个新点:

黄色:滚动时出现新的 div

在此处输入图像描述

为此,我做了一个循环,每 5 个喜欢的人使用一个“滚动脚本”

我的代码:

fBody  = browser.find_element_by_xpath("/html/body/div[5]/div/div/div[2]/div")
raw_elems = browser.find_elements_by_xpath("//body//div//span[@class='Jv7Aj mArmR MqpiF  ']//a[@class='FPmhX notranslate MBL3Z']")

for i in range(0,150):
    i += 1
    if(i%6) == 5 :
        browser.execute_script('arguments[0].scrollTop = arguments[0].scrollTop + arguments[0].offsetHeight;', fBody)
        print("-------------------------SCROLL-----------------------------------")
        sleep(10)
    current = raw_elems[i].get_attribute('href')
    followers.append(current)
    print(current)
    sleep(1)
print(followers)

我真的不明白为什么在第 10 个用户名的末尾,它返回我“列表索引超出范围”,

佩斯^ ^

标签: pythonlistseleniumfor-loop

解决方案


当浏览器运行 JavaScript 添加新元素时,您必须再次使用find_elements

if i % 6 == 5 :
    browser.execute_script('arguments[0].scrollTop = arguments[0].scrollTop + arguments[0].offsetHeight;', fBody)
    print("-------------------------SCROLL-----------------------------------")
    sleep(10)

    # get all elements again
    raw_elems = driver.find_elements_by_xpath("//body//div//span[@class='Jv7Aj mArmR MqpiF  ']//a[@class='FPmhX notranslate MBL3Z']")

推荐阅读