【问题标题】:How to handle load more button in selenium python如何在 selenium python 中处理加载更多按钮
【发布时间】:2021-04-20 17:07:54
【问题描述】:

我是 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()

【问题讨论】:

    标签: python html selenium web automation


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回答,我会试试这个...是的,这是按钮。我只能点击一次,之后它会继续加载并且不会出现
    • 我试过这个,它没有用,意味着按钮被点击一次,但又消失了。我想一直单击该按钮,直到加载所有 cmets,但第一次单击后它不会再次出现,它会继续加载自身
    • 真的吗?它对我有用。每当我单击加载更多按钮时,滚动后会出现一个新按钮。
    • 不适合我,可能有一些浏览器问题
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-08
      • 2022-12-18
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      相关资源
      最近更新 更多