Python: выскабливание селена / вложенная петля - PullRequest
0 голосов
/ 04 марта 2019

В настоящее время я тренируюсь по поиску в Интернете.Для этого я пытаюсь получить список имен пользователей, которым понравился пост.Пока что я написал скрипт, который работает с небольшими списками имен пользователей (ниже 100), и он все еще не надежен, потому что я думаю, что платформы обнаруживают автоматизацию ...

Вот мой код: ('https://www.instagram.com/p/BuT_u-UAKn1/')

# Locating the likers' list
userid_element = driver.find_elements_by_xpath('//*[@id="react-root"]/section/main/div/div/article/div[2]/section[2]/div/div/a')[0].click()
time.sleep(2)

# Getting the number of likes on the given post
likes = driver.find_element_by_xpath('/html/body/span/section/main/div/div/article/div[2]/section[2]/div/div/a/span').text
no_space = likes.replace(' ','')
int_likes = int(no_space)
print(int_likes)

# Getting the actual list of users
users = []

height = driver.find_element_by_xpath("/html/body/div[2]/div/div[2]/div/div").value_of_css_property("padding-top")
match = False
while match==False:
    lastHeight = height

    # step 1
    elements = driver.find_elements_by_xpath("//*[@id]/div/a")

    # step 2
    for element in elements:
        if element.get_attribute('title') not in users:
            users.append(element.get_attribute('title'))

    # step 3
    driver.execute_script("return arguments[0].scrollIntoView();", elements[-1])
    time.sleep(0.1)

    # step 4
    height = driver.find_element_by_xpath("//html/body/div[2]/div/div[2]/div/div").value_of_css_property("padding-top")
    if int_likes == len(users) and lastHeight==height:
        match = True

print(users)
print(len(users))
driver.quit()

Проблема в том, что я получил эту ошибку:

StaleElementReferenceException: Сообщение: ссылка на элемент устарела, либо элемент больше не присоединен кDOM, это не в текущем контексте фрейма, или документ был обновлен

Поэтому я хотел бы добавить условие, которое гласит: «когда циклы перестают загружаться и длина пользователей»список не равен int_likes, сломайте, подождите несколько секунд, прокрутите немного вверх (например, 400 пикселей) и затем перезапустите процесс, пока он не будет соответствовать требованиям ".

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

Спасибо

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