首页 > 解决方案 > 如何在 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()

标签: pythonhtmlseleniumwebautomation

解决方案


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

以下 Javascript 代码将在评论中找到该按钮并单击它。

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

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

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

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

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

Instagram 加载更多按钮


推荐阅读