chrome iframe cookies设置失败

新版Chrome增加了一个功能 SameSite,可以禁止iframe设置cookies。

如果我们在iframe中需要登录验证,那就比较麻烦。可以通过禁用这个功能解决。

Chrome访问 chrome://flags/ ,搜索_SameSite,找到SameSite by default cookies,这是为Disabled

作用是,禁止浏览器的SameSite功能生效。

好的,可以使用 Python 的 requests 和 BeautifulSoup 库来实现爬取京东购物车的功能。 首先,我们需要登录京东账号并获取到登录后的 cookies。这里可以使用 selenium 自动化测试工具来模拟登录。 ```python from selenium import webdriver import time # 设置 Chrome 浏览器的路径 chromedriver_path = 'path/to/chromedriver' # 创建 Chrome 浏览器实例并打开京东网址 browser = webdriver.Chrome(chromedriver_path) browser.get('https://www.jd.com/') # 等待网页加载完成 time.sleep(3) # 点击京东登录按钮 login_btn = browser.find_element_by_link_text('你好,请登录') login_btn.click() # 等待登录弹窗出现 time.sleep(2) # 切换到登录弹窗的 iframeiframe = browser.find_element_by_css_selector('#loginFrame') browser.switch_to.frame(iframe) # 点击账户登录选项 login_tab = browser.find_element_by_xpath('//*[@id="tab-account"]') login_tab.click() # 输入用户名和密码 username_input = browser.find_element_by_id('loginname') password_input = browser.find_element_by_id('nloginpwd') username_input.send_keys('your_username') password_input.send_keys('your_password') # 点击登录按钮 submit_btn = browser.find_element_by_id('loginsubmit') submit_btn.click() # 等待登录成功后跳转到首页 time.sleep(3) ``` 接下来,我们需要获取购物车页面的 HTML 代码,并使用 BeautifulSoup 解析出商品的信息。 ```python import requests from bs4 import BeautifulSoup # 获取购物车页面的 HTML 代码 cookies = browser.get_cookies() headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('https://cart.jd.com/cart.action', headers=headers, cookies={c['name']:c['value'] for c in cookies}) # 解析购物车页面 HTML 代码 soup = BeautifulSoup(response.text, 'html.parser') items = soup.select('div.item-form') # 遍历购物车中每个商品并输出名称和价格 for item in items: name = item.select_one('div.p-name > a').text.strip() price = item.select_one('div.p-price > strong > i').text.strip() print(name, price) ``` 这样就可以输出购物车中每个商品的名称和价格了。注意,这里需要将登录成功后获取到的 cookies 添加到 requests 的 headers 中,否则无法获取到购物车页面的 HTML 代码。 完整代码如下: ```python from selenium import webdriver import time import requests from bs4 import BeautifulSoup # 设置 Chrome 浏览器的路径 chromedriver_path = 'path/to/chromedriver' # 创建 Chrome 浏览器实例并打开京东网址 browser = webdriver.Chrome(chromedriver_path) browser.get('https://www.jd.com/') # 等待网页加载完成 time.sleep(3) # 点击京东登录按钮 login_btn = browser.find_element_by_link_text('你好,请登录') login_btn.click() # 等待登录弹窗出现 time.sleep(2) # 切换到登录弹窗的 iframeiframe = browser.find_element_by_css_selector('#loginFrame') browser.switch_to.frame(iframe) # 点击账户登录选项 login_tab = browser.find_element_by_xpath('//*[@id="tab-account"]') login_tab.click() # 输入用户名和密码 username_input = browser.find_element_by_id('loginname') password_input = browser.find_element_by_id('nloginpwd') username_input.send_keys('your_username') password_input.send_keys('your_password') # 点击登录按钮 submit_btn = browser.find_element_by_id('loginsubmit') submit_btn.click() # 等待登录成功后跳转到首页 time.sleep(3) # 获取购物车页面的 HTML 代码 cookies = browser.get_cookies() headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('https://cart.jd.com/cart.action', headers=headers, cookies={c['name']:c['value'] for c in cookies}) # 解析购物车页面 HTML 代码 soup = BeautifulSoup(response.text, 'html.parser') items = soup.select('div.item-form') # 遍历购物车中每个商品并输出名称和价格 for item in items: name = item.select_one('div.p-name > a').text.strip() price = item.select_one('div.p-price > strong > i').text.strip() print(name, price) # 关闭浏览器 browser.quit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值