Соберите имя пользователя Insagram с помощью selenium python

#python #selenium #selenium-webdriver #python-requests #instagram

Вопрос:

я пытаюсь сохранить имена пользователей, которым понравился мой пост в Instagram

вот мой код :

 from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from time import *
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
browser = webdriver.Chrome(options=chrome_options)

browser.get('https://www.instagram.com/p/CMAVjR5CmOx/')


continue_link = browser.find_element_by_partial_link_text('others')
continue_link.click()

elems = browser.find_elements_by_css_selector(".FPmhX.notranslate.MBL3Z")
links = [elem.get_attribute('title') for elem in elems]

WebElement = browser.find_element_by_xpath('//*[ contains (text(), ‘#’ ) ]')
WebElement.click()

browser.execute_script("arguments[0].scrollIntoView();", WebElement)
 

проблема в том, что он просто сохраняет 11 первых имен пользователей и не может прокрутить вниз, чтобы загрузить их все

я попробовал некоторые коды для прокрутки вниз, но они прокручивают главную страницу, в то время как я хочу, чтобы «список подписчиков» прокручивался

главный экран

кто-нибудь может помочь мне с этой прокруткой вниз?

я попытался использовать «send.key» и «browser.execute_script(«аргументы[0].scrollIntoView();»,Элемент)», но ничего полезного

Комментарии:

1. Ваш вопрос был решен?

2. @vitaliis нет, к сожалению

Ответ №1:

Попробуйте это решение. Я использую его прямо сейчас, так что почти уверен, что он работает.

 # try to find the locator of the div element which contain the slider
element = browser.find_element_by_xpath('//div/parent::ul/parent::div')

# increase the distance from the top element each time one pixel
verical_ordinate = 100
for i in range(0, 50):
   print(verical_ordinate)
   browser.execute_script("arguments[0].scrollTop = arguments[1]", element, 
   verical_ordinate)
   verical_ordinate  = 100
   time.sleep(1)
 

Ответ №2:

Для прокрутки я обычно использую этот код, и он всегда работает.

 driver.execute_script("arguments[0].scrollIntoView();",driver.find_element_by_xpath("your_xpath_selector"))
 

Во-первых, переименуйте WebElement свое пользовательское имя, например web_element , в «поскольку ваше имя сбивает с толку».
Во-вторых, убедитесь, что этот локатор правильный. К сожалению, у меня нет учетной записи Instagram, и я не могу проверить этот локатор.

Комментарии:

1. если у вас нет учетной записи instagram, это не проблема, вы можете просматривать публичный пост и управлять его html-тегами. я знаю, что моя главная проблема в том, что я не могу найти правильный элемент для его прокрутки. в instgram есть много классов для отображения списка

2. Пожалуйста, добавьте html-код, в котором вы хотите найти локатор. Я могу помочь с этим локатором.

3. как я могу отправить вам его фотографию, напишите мне по электронной почте или в любой учетной записи в социальных сетях, пожалуйста

4. Вы можете опубликовать часть html-кода в виде фрагмента здесь. Используйте devtools, чтобы найти нужную вам деталь.