Как обработать кнопку загрузить больше в selenium python

#python #html #selenium #web #automation

#питон #HTML #селен #веб #автоматизация

Вопрос:

Я новичок в python, и я пытаюсь автоматизировать нажатие кнопки загрузить больше, присутствующей в разделе комментариев instagram, используя selenium и python. Я могу щелкнуть только один раз. После первого нажатия кнопка исчезает, я ждал 10 минут, но она больше не появлялась. А также статус запроса изменился на 302, когда щелчок был выполнен с использованием автоматизации. Код состояния остается 200 при нажатии вручную. Пожалуйста, помогите мне, ребята, как выполнять щелчок, пока не будут загружены все комментарии. Любая помощь будет оценена по достоинству. вот мой код

 from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import time

options = webdriver.FirefoxOptions()
options.add_argument('start-maximized')

browser = webdriver.Firefox(executable_path='./drivers/geckodriver')
browser.maximize_window()

url = 'https://www.instagram.com/p/CKCVIu2gDgn'
browser.get(url)
browser.implicitly_wait(10) #wait for 10 sec
load_more = browser.find_element(By.XPATH,'/html/body/div[1]/section/main/div/div[1]/article/div[3]/div[1]/ul/li/div/button/span').click()
 

Ответ №1:

Для чего-то подобного вы можете захотеть использовать excute_script функцию Selenium, которая в основном позволяет вам запускать Javascript на веб-странице.

Следующий код Javascript найдет кнопку в комментариях и нажмет на нее.

 document.querySelector("button.dCJp8.afkep").click()
 

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

Ниже приведена строка кода Python, которую вы можете использовать в своей программе, чтобы нажать кнопку загрузить больше.

 driver.execute_script("document.querySelector('button.dCJp8.afkep').click()")
 

Кстати, я предполагаю, что эта круглая кнопка со знаком плюс является целью щелчка.

Кнопка загрузить больше в Instagram

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

1. спасибо за ответ, я попробую это… да, это кнопка. я могу щелкнуть только один раз, после этого он продолжает загружаться и не появляется

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

3. Действительно? У меня это сработало. Всякий раз, когда я нажимаю на кнопку загрузить больше, после некоторой прокрутки появляется новая.

4. не для меня, может быть, есть какие-то проблемы с браузером

Ответ №2:

Используйте библиотеку instaloader, она очень легко справляется с такими вещами. вот полная документация.