如何使用selenium加载Cookie并打开多个选项卡?

2024-04-19 05:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我向程序提供firefox配置文件的路径,它将打开多个窗口,但如果没有,它将打开多个选项卡。我需要它来打开多个选项卡。有什么想法吗

# driver = webdriver.Firefox(firefox_profile = r"C:\Users\Aron\AppData\Roaming\Mozilla\Firefox\Profiles\azz050gk.default-release")
driver = webdriver.Firefox(r'C:\Users\Aron\AppData\Roaming\Mozilla\Firefox\Profiles\azz050gk.default-release')
driver.get(sites['site'][0])
for i in range(size - 1,0, -1):
    driver.execute_script("window.open('" + sites['site'][i] +"');")

Tags: defaultmozillareleasedriverfirefoxprofilesroamingusers
1条回答
网友
1楼 · 发布于 2024-04-19 05:21:38

我使用此选项保存和加载Cookie:

# ===========================================================
def save_cookies(driver, site_name):
    cookies = driver.get_cookies()

    for cookie in cookies:
        if isinstance(cookie.get('expiry'), float):
            cookie['expiry'] = int(cookie['expiry'])
    pickle.dump(cookies, open(site_name + ".pkl", "wb"))


# =================================================================================
def load_cookies(driver, site_name):
    if not os.path.isfile(site_name + ".pkl"):
        return

    cookies = pickle.load(open(site_name + ".pkl", "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)

你需要获取站点,加载cookies,重新加载,保存cookies。第一次您必须手动接受cookies。在那之后,它应该被保存

from selenium import webdriver
import os
import pickle
import time

# ==============================================================
def save_cookies(driver, site_name):
    cookies = driver.get_cookies()

    for cookie in cookies:
        if isinstance(cookie.get('expiry'), float):
            cookie['expiry'] = int(cookie['expiry'])
    pickle.dump(cookies, open(site_name + ".pkl", "wb"))


# ===============================================================
def load_cookies(driver, site_name):
    if not os.path.isfile(site_name + ".pkl"):
        return

    cookies = pickle.load(open(site_name + ".pkl", "rb"))
    for cookie in cookies:
        driver.add_cookie(cookie)


# ==========================================================

# open the web driver                  
project_dir = os.path.split(os.getcwd())[0] + '/../'
driver = webdriver.Chrome(executable_path=os.path.join(project_dir, 'chromedriver.exe'))

site_url = 'https://bol.com'
site_name = 'bol.com'

driver.get(site_url)  # site must be loaded before cookies can be loaded
load_cookies(driver, site_name)
driver.get(site_url)  # now the site is reloaded using the cookies

# get some time to manually accept the cookies the first run
time.sleep(10)

# do your scraping 

save_cookies(driver, site_name)

driver.close()

下次“接受cookies”不应该出现

在windows上打开chrome驱动程序的新选项卡对我来说很有用:

driver.get("http://www.google.com/")

#open tab
driver.execute_script('''window.open("http://bings.com","_blank");''')

driver.close()

相关问题 更多 >