使用 Selenium 自动化爬取 Booking 网站时,有时会遇到需要点击同意按钮才能进入网站的问题,而人工手动搜索网址则可以直接进入。这是因为 Selenium 自动化爬取时无法触发网站的一些 JS 事件,导致无法自动同意按钮。

您可以尝试以下两种解决方法:

1. 等待同意按钮出现并点击

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

browser.get('https://www.booking.cn/hotel/cn/chengdu-tuo-ban-xie-qing-nian-lv-she.zh-cn.html#tab-reviews')

# 等待同意按钮出现并点击
try:
    agree_button = WebDriverWait(browser, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='onetrust-accept-btn-handler']")))
    agree_button.click()
except:
    print("同意按钮未找到或无法点击")

2. 手动获取 cookie 并添加到 Selenium 浏览器中

如果以上方法仍然不能解决问题,您可以考虑手动获取 cookie 并添加到 Selenium 浏览器中,以绕过同意按钮的问题。

具体步骤如下:

  1. 使用浏览器访问目标网站,并手动点击同意按钮。
  2. 打开浏览器开发者工具(F12),选择“Application”选项卡,找到“Cookies”栏目。
  3. 找到目标网站的 cookie,并复制其内容。
  4. 将复制的 cookie 内容添加到 Selenium 浏览器中,方法如下:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 创建浏览器实例
browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# 加载目标网站
browser.get('https://www.booking.cn/hotel/cn/chengdu-tuo-ban-xie-qing-nian-lv-she.zh-cn.html#tab-reviews')

# 添加 cookie
browser.add_cookie({'name': 'cookie_name', 'value': 'cookie_value'}) 

# 刷新页面
browser.refresh()

其中,cookie_namecookie_value 分别替换为目标网站 cookie 的名称和值。

通过以上两种方法,您就可以成功绕过同意按钮,实现 Selenium 自动化爬取 Booking 网站。

Selenium 自动化爬取 Booking 网站遇到同意按钮问题解决方法

原文地址: https://www.cveoy.top/t/topic/nQK5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录