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

📅  最后修改于: 2022-05-13 01:54:50.537000             🧑  作者: Mango

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

在这里,在本文中,我们将讨论如何使用Python在 Instagram 上向下滚动关注者弹出窗口。使用selenium,我们将自动化浏览器并在 Instagram 的社交网站上执行自动化。在开始实际实现之前,我们需要使用 pip 命令安装Selenium库。

安装:

pip install Selenium

现在,让我们检查是否安装了我们的selenium 。如果下面的命令没有给出任何错误,则表示selenium已成功安装。

Python3
import selenium
print(selenium.__version__)


Python3
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.microsoft import EdgeChromiumDriverManager
  
driver = webdriver.Chrome(ChromeDriverManager().install())
  
# open the webpage
driver.get("http://www.instagram.com")
  
# target username
username = WebDriverWait(
    driver, 10).until(EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "input[name='username']")))
  
# target Password
password = WebDriverWait(
    driver, 10).until(EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "input[name='password']")))
  
# enter username and password
username.clear()
username.send_keys("")
password.clear()
password.send_keys("")
  
# target the login button and click it
button = WebDriverWait(
    driver, 2).until(EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "button[type='submit']"))).click()
  
time.sleep(5)
  
driver.get("https://www.instagram.com/geeks_for_geeks/followers/")
  
driver.find_element_by_partial_link_text("follower").click()
  
pop_up_window = WebDriverWait(
    driver, 2).until(EC.element_to_be_clickable(
        (By.XPATH, "//div[@class='isgrP']")))
  
# Scroll till Followers list is there
while True:
    driver.execute_script(
        'arguments[0].scrollTop = arguments[0].scrollTop + arguments[0].offsetHeight;', 
      pop_up_window)
    time.sleep(1)
  
driver.quit()


输出:

3.141.0

方法:

现在,让我们讨论如何执行向下滚动功能的方法。使用 while 循环,我们将向下滚动关注者弹出窗口,直到我们的程序到达最后一个关注者。首先,我们将使用我们的登录 ID 和密码自动化登录过程,然后转到 GeeksforGeeks Instagram 页面。单击关注者的按钮,然后在弹出窗口中执行向下滚动操作。



  • 首先,我们需要从Selenium库中导入时间模块和所有必要的类或方法。
  • 安装Chrome 网络驱动程序,我们将通过它在 Chrome 网络浏览器上执行所有任务。与 Chrome 一样,我们可以安装任何其他浏览器,例如 Edge、IE、Firefox 等等。
driver = webdriver.Chrome(ChromeDriverManager().install())

使用上面的行,我们不需要在我们的系统中存在任何物理驱动程序。此行将使用 web.xml 自动安装所需的 chrome web 驱动程序。

  • 使用驱动程序对象和具有给定 URL 的get()方法打开网站。
driver.get("http://www.instagram.com")
  • WebDriverWait也称为显式等待。显式等待是定义在继续进行之前等待特定条件发生的代码。在这段代码中,在CSS_SELECTOR的帮助下,我们将找到用于登录目的的用户名密码字段。
  • 现在,在将用户名密码放入所选字段之前,首先使用 clear() 方法清除用户名密码字段。然后,使用send_keys()方法输入用户名和密码值。
username.clear()
username.send_keys("")
  • 使用CSS_SELECTOR单击登录按钮。
  • 我们完成了 Instagram 登录。现在,我们可以打开我们将在其上执行滚动的目标配置文件 URL。
driver.get("https://www.instagram.com/geeks_for_geeks/followers/")

在这里,在这个实际实现中,我们使用geeksforgeeks追随者弹出窗口进行滚动。

  • 使用find_element_by_partial_link_text方法单击关注者按钮。
  • 使用 XPATH 从网页中查找弹出窗口元素。在弹出窗口中,我们将使用 while 循环来执行滚动,直到程序到达最后一个关注者。这就是为什么我们始终将循环视为 TRUE。
  • 最后,一旦我们完成了我们的任务。我们将使用 quit() 方法关闭资源。

下面是完整的实现:

蟒蛇3

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.microsoft import EdgeChromiumDriverManager
  
driver = webdriver.Chrome(ChromeDriverManager().install())
  
# open the webpage
driver.get("http://www.instagram.com")
  
# target username
username = WebDriverWait(
    driver, 10).until(EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "input[name='username']")))
  
# target Password
password = WebDriverWait(
    driver, 10).until(EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "input[name='password']")))
  
# enter username and password
username.clear()
username.send_keys("")
password.clear()
password.send_keys("")
  
# target the login button and click it
button = WebDriverWait(
    driver, 2).until(EC.element_to_be_clickable(
        (By.CSS_SELECTOR, "button[type='submit']"))).click()
  
time.sleep(5)
  
driver.get("https://www.instagram.com/geeks_for_geeks/followers/")
  
driver.find_element_by_partial_link_text("follower").click()
  
pop_up_window = WebDriverWait(
    driver, 2).until(EC.element_to_be_clickable(
        (By.XPATH, "//div[@class='isgrP']")))
  
# Scroll till Followers list is there
while True:
    driver.execute_script(
        'arguments[0].scrollTop = arguments[0].scrollTop + arguments[0].offsetHeight;', 
      pop_up_window)
    time.sleep(1)
  
driver.quit()

输出: