Python中Selenium结合HTTP请求实现选尺码及加购操作方法
解决方案
核心逻辑
你判断的没错——该站点通过GET请求携带尺码参数完成尺码选择,对应请求地址就是元素data-href属性拼接域名后的完整URL。要实现requests选尺码 + Selenium后续加购,关键是保持会话一致性:必须让requests和Selenium共享同一会话的Cookies,否则requests的操作不会同步到Selenium的浏览器会话中。
具体实现代码
1. 初始化Selenium并同步会话Cookies
先打开商品页,获取浏览器会话的Cookies,用于requests请求的身份关联:
from selenium import webdriver from selenium.webdriver.common.by import By import requests # 初始化Chrome浏览器 driver = webdriver.Chrome() product_url = "https://www.snipes.pl/p/jordan-air_jordan_1_zoom_air_comfort-dark_iris%2Fwhite%2Fblack%2Fsail-00013802067771.html" driver.get(product_url) # 转换Selenium Cookies为requests可用格式 selenium_cookies = driver.get_cookies() session_cookies = {c['name']: c['value'] for c in selenium_cookies}
2. 用requests发送尺码选择请求
携带会话Cookies发送GET请求,确保尺码选择操作同步到当前会话:
# 尺码选择的完整请求URL size_select_url = "https://www.snipes.pl/p/jordan-air_jordan_1_zoom_air_comfort-dark_iris%2Fwhite%2Fblack%2Fsail-00013802067771.html?chosen=size&dwvar_00013802067771_size=44" # 发送请求并验证结果 response = requests.get(size_select_url, cookies=session_cookies) if response.status_code == 200: print("尺码选择请求成功")
3. Selenium执行加入购物车操作
刷新页面确保状态同步后,定位加购按钮点击:
driver.refresh() # 替换为页面实际的加购按钮选择器 add_to_cart_btn = driver.find_element(By.CSS_SELECTOR, "button[data-testid='add-to-cart']") add_to_cart_btn.click()
简化方案:直接用Selenium模拟请求
如果不想引入requests,也可以在Selenium中通过JS跳转尺码URL,同样能完成选择:
size_select_url = "https://www.snipes.pl/p/jordan-air_jordan_1_zoom_air_comfort-dark_iris%2Fwhite%2Fblack%2Fsail-00013802067771.html?chosen=size&dwvar_00013802067771_size=44" driver.execute_script(f"window.location.href = '{size_select_url}';") driver.implicitly_wait(5) add_to_cart_btn = driver.find_element(By.CSS_SELECTOR, "button[data-testid='add-to-cart']") add_to_cart_btn.click()
内容的提问来源于stack exchange,提问作者superprocoder1233211
相关产品推荐
相关产品推荐

