#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, чтобы найти нужную вам деталь.