当前位置: 首页 > news >正文

影刀RPA新手教程:农业电商自动化完全指南——农产品平台上架、订单处理与物流跟踪

影刀RPA新手教程:农业电商自动化完全指南——农产品平台上架、订单处理与物流跟踪

我老家的亲戚做农产品电商,在拼多多、淘宝、抖音三个平台卖家乡的脐橙和红薯粉。最忙的季节每天接几百单,一家人从早到晚趴在电脑前回复客服、打单发货、更新库存。我过年回去看到这状况,花了两天时间用影刀RPA给他们搭了一套自动化流程,接单、打单、发物流信息、库存同步全都自动化了。第二天他告诉我:“这个软件,比请两个员工还管用。”

这篇文章就以农产品电商的完整运营流程为案例主线,从商品上架到订单处理到物流跟踪,带你系统掌握影刀RPA。

一、认识影刀与安装

上影刀官网下载社区版安装包,双击安装。装完记得装浏览器插件。农产品电商常用的是拼多多商家后台、淘宝千牛、抖音商家后台,都是网页系统,所有操作都依赖浏览器插件。

我第一个坑:千牛后台登录后,影刀浏览器插件自动获取的网页对象找不到千牛的页面。原因是千牛有自己的独立窗口,不是常规浏览器标签页。解决办法是用"获取已打开的网页对象"指令,通过窗口标题匹配来找千牛的窗口。

二、元素定位四合一:XPath + CSS + 正则

电商后台的页面结构:左侧导航菜单 + 中间数据表格 + 右侧操作面板。元素密集,需要精准定位。

// 定位"发布商品"按钮 //button[contains(text(),'发布商品')] // 定位商品标题输入框 //input[@placeholder='请输入商品标题'] // 定位价格输入框 //input[@class='price-input'] // 定位库存输入框(数量) //input[@name='stock'] // 定位订单列表的每一行 //table[@class='order-table']//tr[contains(@class,'order-row')] // 定位"待发货"状态的订单 //td[contains(text(),'待发货')]/parent::tr // 按订单号定位 //td[contains(text(),'240624001')]/parent::tr
/* CSS等价定位 */button:contains("发布商品")input[placeholder*="商品标题"] input.price-input input[name="stock"] tr.order-rowtr:has(td:contains("待发货"))

大部分电商后台用CSS就够了,但要找"包含待发货文本那一行"这种需求,CSS的:has()部分浏览器不支持,还是得用XPath。

正则处理电商数据:

importre# 提取订单金额text="实付金额:¥39.90"amount=re.search(r'¥([\d.]+)',text).group(1)# 39.90# 提取手机号text="收货人:张三 13812345678"phone=re.search(r'1[3-9]\d{9}',text).group()# 从商品标题提取规格title="正宗赣南脐橙 5斤装 中果 新鲜水果包邮"spec=re.search(r'(\d+斤装)',title).group(1)# 5斤装# 提取快递单号text="申通快递:7730123456789"tracking_no=re.search(r'(\d{12,15})',text).group(1)

我当时在提取规格时掉过一个坑:有的商品标题写"5斤装",有的写"5斤/箱",还有的写"净重5斤"。正则如果只匹配"5斤装"就会漏掉后两种。改成r'(\d+)斤'只匹配"数字+斤"部分,三种都能抓到。

三、变量与数据类型

拼多多店群自动化报活动上架!

# 数字——价格、库存、订单数unit_price=39.90stock=500total_orders=0# 字符串——商品信息product_title="正宗赣南脐橙 5斤装 中果 新鲜水果包邮"tracking_no="7730123456789"# 列表——批量订单orders=[{"订单号":"240624001","商品":"脐橙5斤装","数量":2,"金额":79.80},{"订单号":"240624002","商品":"红薯粉3斤装","数量":1,"金额":29.90}]# 字典——商品完整信息product={"标题":product_title,"类目":"生鲜水果 > 橙类","价格":39.90,"库存":500,"规格":"5斤装","运费模板":"全国包邮","主图路径":"D:\\商品图片\\脐橙主图.jpg","详情图路径":"D:\\商品图片\\脐橙详情.jpg"}# JSON——API对接resp=json.loads(response.text)order_list=resp["data"]["orderList"]

四、流程控制

# For循环——批量上架商品products=load_product_list_from_excel("商品上架清单.xlsx")forproductinproducts:# 打开发布页面web.find("#publishBtn").click()# 填写商品信息fill_product_form(product)# 提交web.find("#submitBtn").click()time.sleep(2)# 相似元素循环——遍历待发货订单order_rows=web.find_all("tr.order-row")forrowinorder_rows:status=row.find("td.order-status").textifstatus=="待发货":order_no=row.find("td.order-no").text buyer_info=row.find("td.buyer-info").text to_ship.append({"订单号":order_no,"买家":buyer_info})# While循环——翻页处理全部订单whileTrue:process_current_page_orders()# 判断是否有下一页try:next_btn=web.find("li.next-page:not(.disabled)")next_btn.click()time.sleep(2)except:break# 没有下一页了# 异常处理——防止个别商品上架失败中断流程try:fill_product_form(product)web.find("#submitBtn").click()exceptExceptionase:print(f"商品{product['标题']}上架失败:{e}")failed_products.append(product)continue

五、网页自动化

等待策略:

电商后台数据加载慢是常态。用"等待元素出现"而不是固定等待,能适应网络波动。我的实践经验:等订单表格出现设置为15秒超时,等详情弹窗出现设置10秒超时。

弹窗处理:

电商后台的弹窗很密集:登录过期弹窗、活动推荐弹窗、系统公告弹窗、确认发货弹窗。建议写一个通用的弹窗关闭函数:

defclose_all_popups():close_selectors=["div.popup-close","button.dialog-close","span.close-icon","div.announcement-modal .close-btn"]forselectorinclose_selectors:try:btn=web.find(selector,timeout=2)ifbtn.exists():btn.click()print(f"关闭弹窗:{selector}")except:continue

翻页处理:

待发货订单可能有很多页,用class判断最后一页:

next_btn=web.find("li.pagination-next")class_attr=next_btn.get_attribute("class")if"disabled"inclass_attr:# 最后一页print("已到最后一页")break

六、数据处理

# Excel——读取商品上架清单importopenpyxl wb=openpyxl.load_workbook("商品上架清单.xlsx")ws=wb.active products=[]forrowinrange(2,ws.max_row+1):products.append({"标题":ws.cell(row,1).value,"类目":ws.cell(row,2).value,"价格":ws.cell(row,3).value,"库存":ws.cell(row,4).value,"规格":ws.cell(row,5).value,"主图路径":ws.cell(row,6).value,"详情图路径":ws.cell(row,7).value})# 写入订单发货汇总wb_out=openpyxl.Workbook()ws_out=wb_out.active ws_out.append(["订单号","商品","买家","快递公司","快递单号","发货时间"])fororderinshipped_orders:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/685ae90f3077429b858af69229616e65.png#pic_center)ws_out.append([order["订单号"],order["商品"],order["买家"],order["快递"],order["单号"],order["发货时间"]])wb_out.save("发货记录_20240624.xlsx")# 数据库——订单历史存储importsqlite3 conn=sqlite3.connect("farm_shop.db")cursor=conn.cursor()cursor.execute("""CREATE TABLE IF NOT EXISTS orders ( id INTEGER PRIMARY KEY AUTOINCREMENT, order_no TEXT UNIQUE, product TEXT, buyer TEXT, amount REAL, status TEXT, shipped_at TEXT, tracking_no TEXT )""")cursor.executemany("INSERT OR IGNORE INTO orders VALUES (NULL, ?, ?, ?, ?, ?, ?, ?)",batch_orders)conn.commit()conn.close()

数据库五个报错:database is locked(SQLite单写锁,加WAL模式或重试)、no such column(字段名打错了)、UNIQUE constraint failed(改用INSERT OR IGNORE)、out of memory(数据太大分批插入)、disk I/O error(磁盘满了)。

七、鼠标键盘图像自动化

商品主图上传在有些平台上不能用元素定位驱动(安全限制),用图像识别+键盘输入代替:

# 点击"上传图片"区域image.click("上传图片区域.png")# 在弹出的文件对话框中输入图片路径keyboard.send_keys("D:\\商品图片\\脐橙主图.jpg")keyboard.send_keys("{ENTER}")# 等待上传完成(图片出现)image.wait_appear("上传成功标识.png",timeout=30)

图像识别的锚点九位置:左上、中上、右上、左中、正中、右中、左下、中下、右下。灵活偏移可以定位到图片区域的任何位置:

# 点击图片中心偏右80像素处image.click("上传区域.png",offset_x=80,offset_y=0)

八、进阶技能

HTTP请求直连电商平台API:

importrequests# 拼多多开放平台API获取订单列表headers={"Content-Type":"application/json","client-id":"your_client_id","access-token":"your_access_token"}params={"order_status":"WAIT_SHIP","page":1,"page_size":50}resp=requests.post("https://open-api.pinduoduo.com/order/list",json=params,headers=headers)orders=resp.json()

OCR——识别快递面单上的单号:

text=ocr.recognize("快递面单照片.png")tracking_no=re.search(r'\d{12,15}',text).group()

Python自定义函数——物流跟踪:

defcheck_logistics_status(tracking_no,express_company):"""查询快递物流状态"""api_mapping={"申通":"https://api.sto.cn/track","圆通":"https://api.yto.net.cn/track","中通":"https://api.zto.com/track"}![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/413baa1f49e747c7943f124314c18ef4.png#pic_center)api_url=api_mapping.get(express_company)ifnotapi_url:return"未支持该快递公司"resp=requests.get(api_url,params={"no":tracking_no})returnresp.json().get("status","未知")

九、平台实战

拼多多批量发货流程:

TEMU店群矩阵自动化运营核价报活动

每天自动登录拼多多商家后台 → 进入订单管理 → 筛选"待发货"订单 → 逐条获取收件人信息 → 调用打单软件API自动打印快递面单 → 在后台填入快递单号批量发货。

库存同步:

每个店铺卖出去一件,自动从总库存里减掉一件。每天凌晨同步一次三个平台的实际库存数,防止超卖。农产品不像标品能随时补货,超卖意味着发不出货要赔钱。

这两个流程帮我亲戚家每个月省了200多个小时的人工,最关键的是再也没出现过错发、漏发、超卖的情况。

十、系统联动

# 飞书消息——新订单提醒webhook="https://open.feishu.cn/open-apis/bot/v2/hook/xxx"msg={"msg_type":"text","content":{"text":f"新订单!{order['商品']}×{order['数量']},金额{order['金额']}元"}}requests.post(webhook,json=msg)# 飞书多维表格——库存监控看板lark_base.update_record("tblStock",record_id,{"当前库存":new_stock,"更新时间":datetime.now().strftime("%Y-%m-%d %H:%M")})# 短信通知买家已发货# 调用云片网等短信APIsend_sms(phone=order["手机号"],content=f"您的订单{order_no}已发货,{express_company}{tracking_no}")

十一、工程化规范

主流程_每日电商运营 ├── 子流程_登录各平台(参数:平台名称、账号密码) ├── 子流程_订单处理(参数:日期范围) ├── 子流程_批量发货(参数:订单列表) ├── 子流程_库存同步(参数:平台) └── 子流程_物流跟踪(参数:快递单号列表)

调试经验:电商流程最怕"发货发重了"。我的做法是在流程里加一个"已发货检查"——插入快递单号前先检查该订单是否已有单号,有就跳过。

命名规范:order_no_list(列表)、ORDER_STATUS_SHIPPED(状态常量)、productPrice(金额)。

版本选择:农产品个体户用社区版免费足够;小型电商团队用创业版定时运行;电商公司用企业版对接开放平台API。

十二、速查表与常见报错

报错原因方案
商品发布失败必填字段没填逐一检查所有必填项
图片上传超时图片太大或网络慢压缩图片到1M以下
发货重复没有检查是否已发货发货前加状态检查
库存不一致多平台不同步设置统一库存缓存
登录过期Cookie失效定时重新登录
反爬限制操作太频繁加延时+模拟人工节奏

农业电商不比城市电商,很多时候是一个人管三四个平台,手工根本管不过来。把重复性的事情交给RPA,人去做选品、定价、营销这些真正需要动脑子的事。

RPA在农产品电商里的应用价值被严重低估了,实际用起来比招两个客服还靠谱——毕竟程序不会请假、不会算错账、不会漏发。home.linyan.cloud 上有更多行业落地方案可以参考。

#影刀RPA #RPA教程 #农业电商 #农产品上架 #订单自动化
作者:林焱

http://www.jsqmd.com/news/1098387/

相关文章:

  • [特殊字符] 淘宝/天猫API vs Web爬虫:合规性·稳定性·成本全方位对比(附Python源码)
  • 5分钟上手G-Helper:华硕笔记本性能调控的终极轻量级解决方案
  • Dify工作流实战:从零构建可视化AI应用编排平台
  • 量子计算与DMET-SQD方法在药物设计中的应用
  • 环境变量简述
  • 可微分无权重控制器(DWCs)技术解析与硬件优化实践
  • 影刀RPA新手教程:子流程参数传递完全指南——怎么把数据传进去,把结果传出来
  • 未来展望:openEuler/easybox路线图与未实现命令的优先支持计划 [特殊字符]
  • 告别QQ音乐加密格式限制!Mac用户必备的音频格式转换神器
  • 怎样高效使用BallonTranslator:面向新手的深度学习漫画翻译方案
  • C盘文件怎么清理?【图文讲解】C盘文件夹哪些可以删除?完整查找清理教程
  • 量子粒计算:从经典到量子的信息处理范式迁移
  • 深度学习加速器架构:混合精度计算与张量核心优化
  • 医院信息系统(HIS)
  • 一文搞懂正向代理与反向代理
  • FPGA稀疏卷积优化:SparsePixels框架解析与应用
  • 终极指南:5分钟让PlayStation手柄在Windows游戏上完美运行
  • 含零代码SAAS、AI编程、源码定制交付
  • 影刀RPA新手教程:外卖运营自动化完全指南——菜品同步、好评管理与外卖数据分析
  • 终极MP4视频修复指南:10分钟免费拯救损坏文件完整教程
  • 如何配置Kiran会话管理器:从基础设置到高级调优的7个技巧
  • 如何免费解锁加密音乐:3分钟掌握跨平台播放的终极技巧
  • 计算机毕业设计之基于社交电商的网络购物平台的设计与实现
  • FPGA加速稀疏卷积:原理、实现与性能优化
  • 别再手动连线了!用这三个脚本(ins.py/automatic/sort.csh)搞定Verilog SOC TOP集成
  • 5大AI音频插件:让Audacity秒变专业音频工作站 [特殊字符]
  • G-Helper:三步解锁华硕笔记本极致性能的轻量级神器
  • Steam Deck模拟器配置的革命性工具:EmuDeck架构深度解析
  • 新手自动化测试入门:5个精选练手项目与实战框架搭建指南
  • archlinux远程桌面控制向日葵安装