如何使用Python Selenium点击Instagram账号following按钮获取关注列表
解决方案
现有代码问题排查
- 定位规则错误:你给出的目标元素是
<a>标签而非<button>,原有XPATH规则//button[contains(text(),'following')]匹配不到目标元素 - 元素获取方法误用:
find_elements_by_xpath返回的是元素列表,无法直接调用click()方法,应该用find_element获取单个元素 - 缺少显式等待:直接查找元素可能因为页面未加载完成抛出找不到元素的异常
修正后的实现代码
原有登录、跳过弹窗、搜索进入目标账号主页的逻辑可正常保留,以下是修正后的点击following、获取完整关注列表的逻辑:
import time from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 点击following板块,优先用href属性定位,稳定性更高 following = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, '//a[contains(@href, "/following/")]')) ) following.click() # 等待关注列表模态框加载完成 follow_list_modal = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '//div[@role="dialog"]//ul')) ) # 滚动加载全部关注列表,解决动态加载问题 last_height = driver.execute_script("return arguments[0].scrollHeight", follow_list_modal) while True: driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", follow_list_modal) time.sleep(2) # 可根据网络情况调整等待时长 new_height = driver.execute_script("return arguments[0].scrollHeight", follow_list_modal) if new_height == last_height: break last_height = new_height # 提取所有关注账号信息 follow_items = follow_list_modal.find_elements(By.TAG_NAME, 'li') for item in follow_items: # 此处可根据需求提取用户名、头像等信息 print(item.text)
注意事项
- Instagram有严格的反爬机制,频繁操作会触发验证码、临时功能限制甚至账号封禁,建议拉长操作间隔,不要短时间内批量爬取数据
- 页面的class属性为动态生成值,不要用class做定位规则,优先用href、文本、role属性这类稳定特征定位,避免前端迭代后定位规则失效
内容的提问来源于stack exchange,提问作者aleus
相关产品推荐
相关产品推荐

