如何处理硒中的加载更多按钮 python

How to handle load more button in selenium python

我是 python 的新手,我正在尝试使用 selenium 和 python 自动点击 Instagram 评论部分中的加载更多按钮。我只能点击一次。第一次点击按钮消失后,我等了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()

对于这样的事情,您可能需要使用 Selenium 的 excute_script 功能,它基本上可以让您在网页上执行 Javascript。

下面的Javascript代码会在评论中找到按钮并点击它。

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

对于这样的壮举,您不会想使用 Selenium 来单击它,因为 Selenium 会尽可能地模仿人类行为。在这种情况下,Selenium 会尝试找到该按钮,如果它在页面上不可见(即您需要滚动才能找到它),它会引发异常。

以下是一行 Python 代码,您可以在程序中使用它来单击“加载更多”按钮。

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

顺便说一句,我假设这个圆形的圆形加号按钮是点击目标。

使用instaloader 库,它很容易处理这些东西。 here 是完整的文档。