【Python】selenium爬取过程中,解决点击去掉弹窗的方法

在测试网页运行爬取的时候,最害怕的就是遇到弹窗。例如最近的双十一双十二的活动,就会弹出这种弹窗:
在这里插入图片描述
有时候也不能忽略,因为如果不把它去掉,获取页面的元素就会失败。

1. 弹窗出现的原理,通过以下的方式触发出来:

1.用户交互: 最常见的触发方式,比如点击一个按钮或链接,弹窗就会出来。

2.页面加载: 页面加载完成后,自动显示弹窗。

3.定时器: 使用JavaScript的setTimeout或setInterval函数,在一定时间后显示弹窗。
4. 事件监听:
监听特定的事件(如鼠标移动、键盘输入等),在事件发生时显示弹窗。

在这里插入图片描述

2. 弹窗的处理方法:

  1. 处理浏览器内置弹窗(Alert、Confirm、Prompt)

    • 对于Alert类型的弹窗,可以使用以下代码来接受弹窗:
      from selenium import webdriver
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      
      driver = webdriver.Chrome()
      driver.get("网页地址")
      driver.find_element(By.ID, "alertButton").click()
      wait = WebDriverWait(driver, 10)
      wait.until(EC.alert_is_present())
      alert = driver.switch_to.alert
      alert_text = alert.text
      print(alert_text)
      alert.accept()  # 接受弹窗
      driver.quit()
      
    • 对于Confirm类型的弹窗,除了接受弹窗外,还可以取消弹窗:
      driver.find_element(By.ID, "confirmButton").click()
      wait.until(EC.alert_is_present())
      confirm = driver.switch_to.alert
      confirm_text = confirm.text
      print(confirm_text)
      confirm.dismiss()  # 取消弹窗
      driver.quit()
      
    • 对于Prompt类型的弹窗,可以输入文本并接受弹窗:
      driver.find_element(By.ID, "promptButton").click()
      wait.until(EC.alert_is_present())
      prompt = driver.switch_to.alert
      prompt_text = prompt.text
      print(prompt_text)
      prompt.send_keys("测试文本")  # 输入文本
      prompt.accept()  # 接受弹窗
      driver.quit()
      
  2. 处理自定义弹窗

    • 对于网页上的自定义弹窗,通常需要定位到弹窗中的关闭按钮或其他元素,并使用Selenium的点击事件来模拟用户操作。例如,如果弹窗中有一个关闭按钮,可以这样操作:
      driver.find_element(By.ID, "closeButton").click()  # 假设关闭按钮的ID是closeButton
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值