📜  如何在 Instagram 中向下滚动关注者弹出窗口?(1)

📅  最后修改于: 2023-12-03 14:52:20.060000             🧑  作者: Mango

如何在 Instagram 中向下滚动关注者弹出窗口?

要实现在 Instagram 中向下滚动关注者弹出窗口的功能,我们可以使用 Python 和 Selenium 进行自动化操作。

准备工作

在开始之前,需要安装 Selenium 和 ChromeDriver。

安装 Selenium

我们可以使用 pip 来安装 Selenium:

pip install selenium
下载 ChromeDriver

Selenium 需要使用浏览器驱动来进行自动化操作,这里我们使用 Chrome 浏览器,所以需要下载对应的 ChromeDriver。

ChromeDriver 下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

下载后,将 ChromeDriver.exe 文件放置在一个合适的位置,并在程序中指定 ChromeDriver 的路径。例如:

from selenium import webdriver

driver = webdriver.Chrome('path/to/chromedriver.exe')
实现滚动操作

首先,需要进入 Instagram 并登录账号:

from selenium import webdriver

driver = webdriver.Chrome('path/to/chromedriver.exe')

# 进入 Instagram 并登录账号
driver.get('https://www.instagram.com/')
driver.find_element_by_name('username').send_keys('你的 Instagram 账号')
driver.find_element_by_name('password').send_keys('你的 Instagram 密码')
driver.find_element_by_xpath('//form/button').click()

登录成功后,我们需要进入一个包含关注者列表的页面,可以是自己的个人主页或其他用户的页面。

以访问自己的个人主页并获取关注者列表为例:

# 进入自己的个人主页
driver.get('https://www.instagram.com/你的 Instagram 用户名/')

# 点击关注者按钮
driver.find_element_by_partial_link_text('follower').click()

# 获取关注者列表
followers_list = driver.find_element_by_xpath('//div[@role="dialog"]//ul')

获取到关注者列表后,我们需要进行滚动操作,直到所有关注者都被加载出来。

可以先获取当前已经加载的关注者数量:

# 获取当前已经加载的关注者数量
followers = driver.find_elements_by_xpath('//div[@role="dialog"]//ul//li')

# 记录已经加载的关注者数量
prev_num_followers = len(followers)

然后,我们可以滚动页面,并等待一段时间,让新的关注者加载完毕。

import time

# 模拟向下滚动操作,并等待一段时间,让新的关注者加载完毕
while True:
    driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', followers_list)
    time.sleep(1)
    followers = driver.find_elements_by_xpath('//div[@role="dialog"]//ul//li')
    curr_num_followers = len(followers)
    if curr_num_followers == prev_num_followers:
        break
    prev_num_followers = curr_num_followers

在滚动完成后,我们就可以获取到所有的关注者,并进行相关的操作。

弹出窗口

想要弹出窗口,可以使用 Python 的 tkinter 库,例如:

import tkinter as tk

def show_followers(followers):
    # 创建新窗口
    window = tk.Toplevel()

    # 显示关注者列表
    for follower in followers:
        tk.Label(window, text=follower.text).pack()

# 获取所有关注者
followers = driver.find_elements_by_xpath('//div[@role="dialog"]//ul//li')

# 弹出窗口显示关注者
show_followers(followers)

这里的 show_followers 函数可以创建一个新的窗口,并将关注者列表显示在窗口中。

完整代码如下:

import time
import tkinter as tk
from selenium import webdriver

def show_followers(followers):
    # 创建新窗口
    window = tk.Toplevel()

    # 显示关注者列表
    for follower in followers:
        tk.Label(window, text=follower.text).pack()

if __name__ == '__main__':
    # 启动 ChromeDriver
    driver = webdriver.Chrome('path/to/chromedriver.exe')

    # 进入 Instagram 并登录账号
    driver.get('https://www.instagram.com/')
    driver.find_element_by_name('username').send_keys('你的 Instagram 账号')
    driver.find_element_by_name('password').send_keys('你的 Instagram 密码')
    driver.find_element_by_xpath('//form/button').click()

    # 进入自己的个人主页
    driver.get('https://www.instagram.com/你的 Instagram 用户名/')

    # 点击关注者按钮
    driver.find_element_by_partial_link_text('follower').click()

    # 获取关注者列表
    followers_list = driver.find_element_by_xpath('//div[@role="dialog"]//ul')

    # 获取当前已经加载的关注者数量
    followers = driver.find_elements_by_xpath('//div[@role="dialog"]//ul//li')
    prev_num_followers = len(followers)

    # 模拟向下滚动操作,并等待一段时间,让新的关注者加载完毕
    while True:
        driver.execute_script('arguments[0].scrollTop = arguments[0].scrollHeight', followers_list)
        time.sleep(1)
        followers = driver.find_elements_by_xpath('//div[@role="dialog"]//ul//li')
        curr_num_followers = len(followers)
        if curr_num_followers == prev_num_followers:
            break
        prev_num_followers = curr_num_followers

    # 获取所有关注者
    followers = driver.find_elements_by_xpath('//div[@role="dialog"]//ul//li')

    # 弹出窗口显示关注者
    show_followers(followers)

    # 关闭 ChromeDriver
    driver.quit()

{% endmarkdown %}