首页 > 解决方案 > Firefox、Selenium、Webdriver:如何以编程方式清除所有 cookie 和站点数据?

问题描述

我有以下设置: Python 3.7 Selenium 3.141.0 Firefox 67.0.4 Geckodriver 0.24.0

我编写了一个从酒店运营商网站上抓取酒店数据的程序。使用该链接作为查询,该程序向该站点提供城市、入住和退房日期、人数等。

程序启动 Firefox 并进行第一次查询,一切顺利。问题从第二个查询开始出现,因为无论以下链接中提供什么,它都会在第一个查询中继续显示城市的结果,只更改日期。

当 webdriver 重新启动时,第一个查询恢复正常,但从第二个查询开始,一切都像以前一样。

我尝试使用 delete_all_cookies() 并将 webdriver 配置文件配置为不创建任何缓存,但它不起作用。我尝试使用 Python 删除配置文件文件夹中的所有文件,但它仍然无法正常工作。

奇怪的是,如果我进入浏览器并手动删除“Cookie 和其他站点数据”就可以了,但我找不到以编程方式执行此操作的方法。在 Firefox 和 Chrome 中都试过了。

重新启动 webdriver 也可以。我知道它会清除个人资料并每次都从新的个人资料开始。但这从时间角度来看太昂贵了。

#First link, it all goes ok
URL = 'https://www.wyndhamhotels.com/en-us/hotels/beijing-china?brand_id=ALL&checkInDate=8/10/2019&checkOutDate=8/11/2019&useWRPoints=false&children=0&adults=2&rooms=1'
DRIVER.get(URL)

# From the second link on, no matter how many searches I d, I always get the results for Beijing
URL = 'https://www.wyndhamhotels.com/en-us/hotels/bremen-germany?brand_id=ALL&checkInDate=9/11/2019&checkOutDate=9/11/2019&useWRPoints=false&children=0&adults=2&rooms=1'
DRIVER.get(URL)

URL = 'https://www.wyndhamhotels.com/en-us/hotels/paris-france?brand_id=ALL&checkInDate=9/11/2020&checkOutDate=9/11/2020&useWRPoints=false&children=0&adults=2&rooms=1'
DRIVER.get(URL)

有没有办法以编程方式删除所有 cookie 和其他站点数据,就像您在 webdriver 运行时从菜单手动执行时那样?或者,换一种思路,当您从浏览器菜单中手动删除 cookie 和其他站点数据时,究竟会发生什么?什么被删除,从哪里删除?

标签: pythonseleniumfirefoxwebdriverscreen-scraping

解决方案


推荐阅读