跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

用 Python 做电商页面自动化抓取与下单流程

这篇内容围绕电商页面自动化脚本展开,说明了用 Python 结合 requests、BeautifulSoup、Selenium 和 ChromeDriver 完成页面访问、Cookie 注入、参数提取、定时提交请求和结果判断的基本流程。文章也指出,真正的难点通常不在发请求,而在动态参数签名、页面结构变化和风控限流;因此脚本需要加入异常处理、随机延迟和重试机制,同时严格遵守平台条款与合规要求。

修罗发布于 2026/6/30更新于 2026/7/229 浏览
用 Python 做电商页面自动化抓取与下单流程

用 Python 做电商页面自动化抓取与下单流程

在 Web 开发里,HTTP 请求、Cookie 和浏览器自动化是绕不开的基本功。拿电商页面做练习最直观:页面怎么拿、登录态怎么带、动态参数怎么取,基本都能碰到。下面这个例子沿着'模拟抢购'的场景展开,但我更愿意把它看成一份自动化脚本的骨架,而不是能直接拿去跑的平台工具。

说明:以下内容仅用于技术学习与研究,请勿用于违反平台服务条款或非法用途。

环境准备

这类脚本通常会用到这些库:

  • requests:负责发送 HTTP 请求。
  • BeautifulSoup4 (bs4):解析 HTML,提取页面里的关键信息。
  • lxml:给 BeautifulSoup 提供更快的解析器。
  • Selenium:控制 Chrome 浏览器,处理动态渲染页面。
  • ChromeDriver:版本要和本地 Chrome 对上,不然启动阶段就会出问题。

安装命令如下:

pip install requests beautifulsoup4 lxml selenium

获取登录态 Cookie

大多数电商平台都会要求先登录,后面的请求才能沿用会话状态。最稳妥的做法还是先在浏览器里登录,再把 Cookie 取出来。

手动获取

  1. 用 Chrome 打开目标网站并完成登录。
  2. 按 F12 打开开发者工具,切到 Application 或 Storage。
  3. 在左侧找到 Cookies,选中对应域名。
  4. 复制完整的 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()
# 1. 设置商品 URL
'https://detail.tmall.com/item.htm?id=xxxx'
# 2. 获取页面源码并解析
'lxml'
# 注意:实际参数名需根据最新页面结构确认
'input'
'name'
'itemId'
'a'
'skipvalue'
True
0
if
'a'
'skipvalue'
True
else
None
'value'
if
else
''
'data-value'
if
else
''
# 3. 配置请求头
'Accept'
'application/json, text/plain, */*'
'Content-Type'
'application/x-www-form-urlencoded;charset=UTF-8'
'Referer'
'User-Agent'
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
# 4. 设置 Cookie (需替换为实际获取的值)
'cookie1'
'xxxx'
'cookie2'
'xxxx'
'Cookie'
'; '
f'{k}={v}'
for
in
# 5. 定义下单接口
'https://cart.taobao.com/add_cart_item.htm'
# 6. 构建请求数据
'action'
'add'
'itemId'
'num'
1
'skuId'
'buyNow'
'false'
# 7. 循环请求直到成功或超时
10
for
in
range
try
5
if
'success'
print
f'第 {i+1} 次尝试:成功加入购物车!'
break
else
print
f'第 {i+1} 次尝试:失败,继续重试...'
except
as
print
f'请求异常:{e}'
0.5
# 避免请求过快被限流
finally

动态参数和限流

真正麻烦的地方不是发请求,而是请求能不能过校验。现在很多平台都会把参数做签名、加密,常见的 Token、Sign 不是简单拼个表单就能过的。到这一步,通常得回头看前端 JS,找参数是怎么生成的。

限流也一样。固定间隔地猛发请求,通常比你想得更快触发风控。这里我会倾向于加一点随机延迟,至少别让请求节奏太像脚本。

import random
time.sleep(random.uniform(0.1, 0.5))

异常处理

网络波动、页面变更、接口超时,这些都很常见。脚本里留好 try-except,失败后重试几次,再把日志记录下来,后面排查会省很多时间。自动化脚本最怕'偶发成功、偶发失败',因为这种问题通常不是一个点坏了,而是链路里有两个地方在抖。

安全与合规

  • 遵守平台服务条款,不要把脚本用到刷单、攻击或破坏正常交易秩序上。
  • Cookie 和账号密码不要随便给别人。
  • 如果自动化行为影响了正常业务流程,法律风险不是空话,别拿技术侥幸。

总结

这类脚本的价值不在'抢购'本身,而在于把浏览器自动化、Cookie 会话、请求构造和异常处理串起来看。链路跑通以后,你对 Web 通信、页面参数和风控边界会更敏感。至于真正落地时,接口签名、页面结构和限流策略往往才是决定脚本能不能用的部分。

目录

  1. 用 Python 做电商页面自动化抓取与下单流程
  2. 环境准备
  3. 获取登录态 Cookie
  4. 手动获取
  5. 注入到请求头
  6. 核心流程
  7. 代码示例
  8. 配置 Chrome 无头模式
  9. 动态参数和限流
  10. 异常处理
  11. 安全与合规
  12. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Pi0 机器人 VLA 大模型昇腾 A2 平台测评
  • Spring Boot 集成数据仓库与 ETL 工具实战
  • C++红黑树封装实战:从零实现 MyMap 与 MySet
  • Cursor 配置 Java 环境与创建 Spring Boot 项目
  • F5 刷新时浏览器前端发生了什么
  • Windows 下 OpenClaw 快速部署指南:核心配置与 Web 界面验证
  • Windows 平台 Python 3.7-3.12 免编译安装 Dlib 库
  • SpringBoot 整合 Zookeeper 常见错误总结
  • 安卓 App 兼容鸿蒙手机安装方案
  • OpenClaw 接入飞书机器人与 Ollama 本地大模型实战
  • 一年从数据分析转型全栈开发的经验与教训
  • FAST_LIO 与 FAST_LIO2 算法复现指南
  • 向日葵 MCP 服务器接入 AI Agent 实现跨设备远程控制
  • 零代码上手!用 Rokid 灵珠平台,5 步搭建专属旅游 AR 智能体
  • VSCode Python 自动导入配置与优化指南
  • 新版 Android Studio 修改 JDK 版本
  • 攻防世界 Web 题解:Lottery 与 ics-05 漏洞分析
  • Spring Boot 集成 MyBatis 与 MyBatis-Plus 实战指南
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • Vue2 和 Vue3 集成 WangEditor 富文本编辑器及自定义上传实战

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online