在python中接受cookie后抓取网页

Posted

技术标签:

【中文标题】在python中接受cookie后抓取网页【英文标题】:Scraping web page after accepting cookies in python 【发布时间】:2021-10-25 15:48:15 【问题描述】:

我正在尝试抓取一个网页,但在访问该页面之前,有一个接受 cookie 的横幅。我正在使用 selenium 单击“接受所有 cookie”按钮,但即使单击该按钮后,我也无法访问正确的 html 页面。

这是我的代码:

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

url = 'https://www.wikiparfum.fr/explore/by-name?query=dior'

driver = webdriver.Chrome(executable_path=DRIVER_PATH)

driver.get(url)
driver.find_element_by_id('onetrust-accept-btn-handler').click()

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')

print(soup)

这是打印的 HTML 页面的开头:

如果有人能帮我解决这个问题,谢谢!

【问题讨论】:

【参考方案1】:

您应该等待接受 cookie 按钮元素出现,然后再单击它

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

url = 'https://www.wikiparfum.fr/explore/by-name?query=dior'

driver = webdriver.Chrome(executable_path=DRIVER_PATH)
wait = WebDriverWait(driver, 20)

driver.get(url)
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#onetrust-accept-btn-handler"))).click()

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')

print(soup)

【讨论】:

以上是关于在python中接受cookie后抓取网页的主要内容,如果未能解决你的问题,请参考以下文章

Python中的HTMLParsercookielib抓取和解析网页从HTML文档中提取链接图像文本Cookies

使用需要单击“我同意cookies”按钮的Python(美丽的汤)抓取网页?

python怎么抓取网页中DIV的文字

用python抓取的网页保存后为啥乱码?

使用显式等待在 Python 中使用 Selenium 弹出“接受 Cookie”

怎样抓取网站上的Cookie