用 Python 做电商页面自动化抓取与下单流程
在 Web 开发里,HTTP 请求、Cookie 和浏览器自动化是绕不开的基本功。拿电商页面做练习最直观:页面怎么拿、登录态怎么带、动态参数怎么取,基本都能碰到。下面这个例子沿着'模拟抢购'的场景展开,但我更愿意把它看成一份自动化脚本的骨架,而不是能直接拿去跑的平台工具。
说明:以下内容仅用于技术学习与研究,请勿用于违反平台服务条款或非法用途。
环境准备
这类脚本通常会用到这些库:
requests:负责发送 HTTP 请求。BeautifulSoup4 (bs4):解析 HTML,提取页面里的关键信息。lxml:给 BeautifulSoup 提供更快的解析器。Selenium:控制 Chrome 浏览器,处理动态渲染页面。ChromeDriver:版本要和本地 Chrome 对上,不然启动阶段就会出问题。
安装命令如下:
pip install requests beautifulsoup4 lxml selenium
获取登录态 Cookie
大多数电商平台都会要求先登录,后面的请求才能沿用会话状态。最稳妥的做法还是先在浏览器里登录,再把 Cookie 取出来。
手动获取
- 用 Chrome 打开目标网站并完成登录。
- 按
F12打开开发者工具,切到Application或Storage。 - 在左侧找到
Cookies,选中对应域名。 - 复制完整的 Cookie 字符串,或者按键值对记录下来。
注入到请求头
后续发请求时,把 Cookie 拼到 Headers 里就行。这个步骤看着简单,实际很关键。没有登录态,很多接口连返回都懒得认真返回。
核心流程
如果把整个过程拆开,主线其实就五步:先起浏览器或准备请求头,再从商品页里抓 itemId、skuId 这类参数,然后等活动时间,接着提交请求,最后看响应结果。
这套流程没什么花哨的,难点反而在细节:参数名会变,页面结构会变,风控策略也会变。
代码示例
下面是一个基于 Selenium 和 Requests 的通用框架。它能说明思路,但不能假设平台接口长期稳定,实际使用时要按页面结构和接口返回重新确认参数。
import time
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 配置 Chrome 无头模式
options = Options()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)
try:
product_url =
driver.get(product_url)
html = driver.page_source
soup = BeautifulSoup(html, )
item_id_elem = soup.find(, attrs={: })
sku_id_elem = soup.find_all(, attrs={: })[] soup.find_all(, attrs={: })
item_id = item_id_elem.get() item_id_elem
sku_id = sku_id_elem.get() sku_id_elem
headers = {
: ,
: ,
: product_url,
:
}
cookies = {
: ,
:
}
headers[] = .join([ k, v cookies.items()])
order_url =
data = {
: ,
: item_id,
: ,
: sku_id,
:
}
max_attempts =
i (max_attempts):
:
res = requests.post(order_url, headers=headers, data=data, timeout=)
res.raise_for_status()
res_json = res.json()
res_json.get():
()
:
()
Exception e:
()
time.sleep()
:
driver.quit()


