Прокрутите вниз до динамически загружаемого диалогового окна в Python - PullRequest
0 голосов
/ 29 декабря 2018

То, что я пытаюсь сделать, это получить всех последователей пользователя Instagram.Проблема в том, что подписчики отображаются в диалоговом окне, которое динамически загружается, как только вы добираетесь до дна.Я нашел решения, чтобы добраться до нижней части бесконечного окна, как в: прокрутка окна или до нижней части диалогового окна, как в: Всплывающая прокрутка

Но в моем случае ничего из этого не работает.

Это мой код:

import os
import random
import sys

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys

url = 'https://www.instagram.com/inbaral/followers/'
driver = webdriver.Firefox()
driver.implicitly_wait(1)
driver.get(url)


username = driver.find_element_by_xpath('//*[@name="username"]')
password = driver.find_element_by_xpath('//*[@name="password"]')
login_btn = driver.find_element_by_xpath('//*[@class="_0mzm- sqdOP  L3NKy       "]')

username.send_keys("name")
password.send_keys("pass")

#login
login_btn.click()
WebDriverWait(driver, 20).until(EC.url_changes('https://www.instagram.com/accounts/login/?next=/inbaral/followers/'))

#click on followers
followers_btn= driver.find_elements_by_class_name('g47SY')
followers_btn[1].click()

# extract followers
WebDriverWait(driver, 20).until(EC.url_changes('https://www.instagram.com/accounts/login/?next=/inbaral/followers/'))
elem = driver.find_element_by_xpath('//*[@class="FPmhX notranslate _0imsa "]')
elem.send_keys(Keys.END)

soup = BeautifulSoup(driver.page_source,features="lxml")
followers = soup.find_all("a",{'class':'FPmhX notranslate _0imsa '})

for follower in followers:
    print(follower.get_text())

driver.quit()

Примечание. Еще одна проблема заключается в том, что иногда загрузка не работает при переходе ко дну, иЕдинственный способ исправить это - физически поиграть с полосой прокрутки

...