В настоящее время я тренируюсь по поиску в Интернете.Для этого я пытаюсь получить список имен пользователей, которым понравился пост.Пока что я написал скрипт, который работает с небольшими списками имен пользователей (ниже 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 пикселей) и затем перезапустите процесс, пока он не будет соответствовать требованиям ".
Но у меня возникли сложностивремя воплощения этой логики в реальный код ... Не могли бы вы, ребята, помочь мне в этом?
Спасибо