Как прокрутить диалоговое окно в Instagram с Selenium? - PullRequest
0 голосов
/ 21 апреля 2019

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

Это мой код:

for username in username_column:
    currentRow=currentRow+1
    userprofile = browser.get('https://www.instagram.com/' + username)

    # Find the "followers" link, click it and wait 2 seconds
    followersLink = browser.find_element_by_xpath("//ul/li[2]/a")
    followersLink.click()
    time.sleep(2)

    # Find the dialog box 
    followersList = browser.find_element_by_css_selector("div[role=\'dialog\'] ul")
    numberOfFollowersInList = len(followersList.find_elements_by_css_selector('li'))
    followersList.click()
    actionChain = webdriver.ActionChains(browser)
    followers = []

    # As long as the number of followers in the list is lower than number required
    # press SPACE. After each press, we refresh the number of users we have in the list
    # and print it.

    while (numberOfFollowersInList < max):

        actionChain.key_down(Keys.SPACE).key_up(Keys.SPACE).perform()
        time.sleep(2)
        numberOfFollowersInList = len(followersList.find_elements_by_css_selector('li'))
        followersInList = followersList.find_elements_by_css_selector('li')
        for element in followersInList:
            followerData = element.text
            print(followerData)
            followers.append(followerData)
            #print(followers)
        followersList.click()

Однако это возвращает мне много повторяющихся данных о подписчиках, и когда я наблюдаю, как браузер (драйвер) делает это в Instagram, он как будто застревает во время прокрутки и не знает, с чего начать прокрутку после прокрутки. один раз. Надеюсь, понятно, что я написал.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...