
影刀RPA深度实战TEMU跨境电商商品自动上架系统完整搭建作者林焱TEMU卖家最头疼的事情从国内平台淘宝/1688采集商品手动把数据填到TEMU后台一张一张上传图片算好美元价格一个个点上架。我之前帮一个TEMU卖家搭过这套自动上架系统把原来每天4小时的上架工作缩短到30分钟。这篇文章把整套系统的完整实现方法写出来。一、TEMU上架的完整流程拆解1.1 上架流程的7个步骤步骤1采集源平台商品数据淘宝/1688 ↓ 步骤2数据格式转换把中文标题转成英文或优化标题 ↓ 步骤3图片下载 图片处理去水印、调整尺寸 ↓ 步骤4自动填写TEMU上架表单标题、描述、价格、库存、物流 ↓  步骤5图片上传主图 详情图 ↓ 步骤6价格计算人民币 → 美元含平台佣金和运费 ↓ 步骤7提交上架或存为草稿人工审核后上架1.2 为什么不能直接用采集的数据上架问题原因解决方案标题是中文TEMU要求英文标题用翻译API转英文或人工优化图片有水印淘宝/1688图片带着平台水印用Python去水印或重新找无水印图价格没有算佣金直接用人民币价格会亏本用价格计算公式自动算描述格式不对TEMU的描述有长度限制和格式要求用Python清洗描述文本二、商品数据采集源平台2.1 从1688采集商品数据1688是TEMU卖家最常用的货源平台。用影刀采集1688商品数据的关键点# -*- coding: utf-8 -*-# 功能采集1688商品数据importrequestsfromlxmlimportetreeimporttimeimportredefcollect_1688_product(product_url): 采集单个1688商品的数据 :param product_url: 1688商品页URL :return: 商品数据字典 headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36,Cookie:your_1688_cookie_here,# 替换成你的CookieReferer:https://www.1688.com/}resprequests.get(product_url,headersheaders,timeout15)htmletree.HTML(resp.text)product{source_url:product_url,source_platform:1688,title_cn:,# 中文标题title_en:,# 英文标题后续翻译price_cny:0.0,# 人民币价格moq:0,# 最小起订量stock:0,# 库存images:[],# 图片URL列表description_cn:,# 中文描述sku_list:[],# SKU列表规格、价格}try:# 提取商品标题titlehtml.xpath(//h1[classd-title]/text())iftitle:product[title_cn]title[0].strip()except:print(提取标题失败)try:# 提取价格1688价格有区间取最低价price_texthtml.xpath(//span[classprice]/text())ifprice_text:price_strre.findall(r[\d.],price_text[0])ifprice_str:product[price_cny]float(price_str[0])except:print(提取价格失败)try:# 提取图片URL1688主图 详情图# 主图main_imageshtml.xpath(//div[classimg-wrap]/img/src)product[images].extend([https:imgforimginmain_imagesifimg.startswith(//)])except:print(提取图片失败)print(f采集完成{product[title_cn]}¥{product[price_cny]})returnproduct三、数据格式转换3.1 标题翻译与优化# -*- coding: utf-8 -*-# 功能将中文标题翻译成英文并优化成适合TEMU的格式importrequestsimportjsondeftranslate_title(title_cn,sourcebaidu): 翻译标题 :param title_cn: 中文标题 :param source: 翻译源baidu / google / deepl :return: 英文标题 ifsourcebaidu:returntranslate_by_baidu(title_cn)elifsourcegoogle:returntranslate_by_google(title_cn)else:# 默认用百度翻译APIreturntranslate_by_baidu(title_cn)deftranslate_by_baidu(text): 调用百度翻译API需要去百度翻译开放平台申请API Key appidyour_baidu_appid# 替换成你的App IDsecret_keyyour_baidu_secret# 替换成你的密钥saltstr(int(time.time()))# 签名appid query salt secret_key 的MD5importhashlib signhashlib.md5((appidtextsaltsecret_key).encode()).hexdigest()urlhttps://fanyi-api.baidu.com/api/trans/vip/translateparams{q:text,from:zh,to:en,appid:appid,salt:salt,sign:sign}resprequests.get(url,paramsparams,timeout10)resultresp.json()iftrans_resultinresult:returnresult[trans_result][0][dst]else:print(f翻译失败{result})returntext# 翻译失败返回原文defoptimize_title_for_temu(title_en): 优化英文标题符合TEMU的SEO要求 :param title_en: 翻译后的英文标题 :return: 优化后的标题 # TEMU标题最佳实践# 1. 长度控制在60-80字符太短不吸引人太长显示不全# 2. 前面放核心关键词如 Women Dress, Men Shoes# 3. 后面放特征词如 Slim Fit, Cotton, Summer# 这里做一个简单的优化截取前80个字符iflen(title_en)80:title_entitle_en[:77]...returntitle_en3.2 描述清洗# -*- coding: utf-8 -*-# 功能清洗商品描述符合TEMU的要求defclean_description(desc_cn): 清洗中文描述转成适合TEMU的英文描述 :param desc_cn: 中文描述 :return: 英文描述 # 步骤1去除HTML标签importre desc_cleanre.sub(r[^],,desc_cn)# 步骤2去除特殊字符和多余空格desc_cleanre.sub(r\s, ,desc_clean).strip()# 步骤3翻译成英文desc_entranslate_by_baidu(desc_clean)# 步骤4TEMU描述长度限制通常500字符以内iflen(desc_en)500:desc_endesc_en[:497]...returndesc_en四、图片处理与上传4.1 图片下载# -*- coding: utf-8 -*-# 功能下载商品图片到本地importosimportrequestsdefdownload_product_images(image_urls,save_dir,product_id): 下载商品图片 :param image_urls: 图片URL列表 :param save_dir: 保存目录 :param product_id: 商品ID用于命名 :return: 本地图片路径列表 # 确保保存目录存在os.makedirs(save_dir,exist_okTrue)local_paths[]fori,urlinenumerate(image_urls):try:# 下载图片resprequests.get(url,timeout10)# 保存图片file_pathos.path.join(save_dir,f{product_id}_{i1}.jpg)withopen(file_path,wb)asf:f.write(resp.content)local_paths.append(file_path)print(f 图片{i1}下载成功{file_path})# 限制最多下载10张图片TEMU通常要求不超过10张ifi9:breakexceptExceptionase:print(f 图片{i1}下载失败{str(e)})continueprint(f图片下载完成成功{len(local_paths)}张)returnlocal_paths4.2 图片去水印简单方案# -*- coding: utf-8 -*-# 功能简单的图片去水印用OpenCVtry:importcv2importnumpyasnpdefremove_watermark_simple(image_path,output_path): 简单的去水印方案用修复算法适用于水印在固定位置的情况 :param image_path: 原始图片路径 :param output_path: 去水印后的图片路径 # 读取图片imgcv2.imread(image_path)# 定义水印区域需要根据实际水印位置调整# 这里假设水印在右下角大小为 100x30h,wimg.shape[:2]watermark_regionnp.zeros((h,w),dtypenp.uint8)watermark_region[h-50:h-10,w-150:w-10]255# 水印区域设为白色# 使用修复算法去水印resultcv2.inpaint(img,watermark_region,3,cv2.INPAINT_TELEA)# 保存结果cv2.imwrite(output_path,result)print(f去水印完成{output_path})exceptImportError:print(OpenCV未安装跳过去水印步骤)# 如果没有安装OpenCV直接复制原图importshutil shutil.copy(image_path,output_path)注意复杂的水印去除需要用到AI模型如GAN这里提供一个简单方案。实际项目中建议找无水印的货源图片。五、TEMU表单自动填写5.1 TEMU上架表单的字段TEMU上架商品需要填写的字段字段说明数据来源商品标题英文60-80字符翻译后的标题商品描述英文500字符以内翻译后的描述商品分类TEMU的类目需要预先映射中文类目→TEMU类目价格美元最终售价用价格公式计算库存可售数量1688的库存数据物流重量用于计算运费需要手动填或估算主图1张图片列表第1张详情图最多9张图片列表第2-10张5.2 用影刀自动填写表单在影刀里的操作【指令序列填写TEMU上架表单】 1. 【打开浏览器】- 打开TEMU卖家后台上架页面 2. 【等待元素出现】- 等待页面加载完成等待标题输入框出现 3. 【输入文本】- 在标题输入框里输入 product[title_en] 4. 【输入文本】- 在描述输入框里输入 product[description_en] 5. 【点击元素】- 点击商品分类下拉框 6. 【Python节点】- 用Selenium的 select 或点击操作选择分类 代码from selenium.webdriver.support.ui import Selectselect Select(driver.find_element_by_id(‘category_select’))select.select_by_visible_text(‘Apparel Accessories’) # 示例分类7. 【输入文本】- 在价格输入框里输入 calculated_price_usd 8. 【输入文本】- 在库存输入框里输入 product[stock] 9. 【上传文件】- 上传主图用影刀的【上传文件】指令 文件local_image_paths[0]主图路径 10.【循环】- 遍历 local_image_paths[1:10]详情图 【上传文件】- 上传每张详情图 11.【点击元素】- 点击「保存草稿」或「提交上架」按钮六、价格计算核心6.1 TEMU价格计算公式TEMU的价格不是随便填的需要考虑售价美元 进货价人民币 国内运费 平台佣金 国际运费 / 汇率 × 利润率系数具体参数参数说明示例值进货价1688的采购价¥30国内运费从供应商发到TEMU仓库的运费¥5平台佣金TEMU收取的交易佣金通常8-15%10%国际运费TEMU代收的运费卖家承担部分$2-5汇率美元兑人民币汇率7.2利润率目标利润率30%6.2 价格计算代码# -*- coding: utf-8 -*-# 功能计算TEMU商品的美元售价defcalculate_temu_price(price_cny,shipping_cny5,commission_rate0.10,intl_shipping_usd3,exchange_rate7.2,profit_rate0.30): 计算TEMU商品的美元售价 :param price_cny: 进货价人民币 :param shipping_cny: 国内运费人民币 :param commission_rate: 平台佣金比例0.10 10% :param intl_shipping_usd: 国际运费美元卖家承担部分 :param exchange_rate: 汇率人民币/美元 :param profit_rate: 目标利润率0.30 30% :return: 计算后的美元售价保留两位小数 # 步骤1计算成本人民币cost_cnyprice_cnyshipping_cny# 步骤2成本转美元cost_usdcost_cny/exchange_rate# 步骤3加上国际运费total_cost_usdcost_usdintl_shipping_usd# 步骤4加上平台佣金注意佣金是按售价收的不是按成本# 公式售价 总成本 / (1 - 佣金比例 - 利润率)price_usdtotal_cost_usd/(1-commission_rate-profit_rate)# 步骤5TEMU价格通常是 .99 结尾如 $9.99, $19.99price_usdround(price_usd)ifprice_usd10:price_usdprice_usd-0.01# 变成 x.99else:price_usdprice_usd-0.01print(f价格计算进货价¥{price_cny}→ TEMU售价${price_usd:.2f})returnround(price_usd,2)# 示例# price calculate_temu_price(price_cny30, shipping_cny5, commission_rate0.10,# intl_shipping_usd3, exchange_rate7.2, profit_rate0.30)# 输出价格计算进货价¥30 → TEMU售价$XX.99七、批量上架与异常处理7.1 批量上架的流程控制# -*- coding: utf-8 -*-# 功能批量上架商品到TEMUdefbatch_upload_to_temu(products,driver): 批量上架商品 :param products: 商品列表 :param driver: 影刀的浏览器对象 success_count0failed_products[]fori,productinenumerate(products):print(f\n 上架第{i1}/{len(products)}个商品 )try:# 步骤1数据格式转换product[title_en]optimize_title_for_temu(translate_title(product[title_cn]))product[description_en]clean_description(product.get(description_cn,))# 步骤2计算价格product[price_usd]calculate_temu_price(product[price_cny])# 步骤3下载图片image_pathsdownload_product_images(product[images],save_dirC:/rpa/temu_images,product_idproduct.get(id,i))# 步骤4填写TEMU表单参考上一节的影刀指令# 这里省略具体的填写代码参考第五节# 步骤5提交上架# 【点击元素】- 点击「提交上架」按钮success_count1print(f 上架成功{product[title_en]})# 频率控制每个商品上架后等待10-20秒time.sleep(random.uniform(10,20))exceptExceptionase:print(f 上架失败{product.get(title_cn)}错误{str(e)})failed_products.append({product:product,error:str(e)})# 单个商品失败不影响其他商品continueprint(f\n 批量上架完成 )print(f成功{success_count}个)print(f失败{len(failed_products)}个)# 保存失败的商品列表iffailed_products:withopen(C:/rpa/failed_uploads.json,w,encodingutf-8)asf:json.dump(failed_products,f,ensure_asciiFalse,indent2)常见问题速查#现象原因解决方式1TEMU上架表单填写失败页面元素没加载完就填在每个填写操作前加「等待元素出现」等待时间设3秒2图片上传失败图片格式不对TEMU要求JPG/PNG用Python的PIL库转换图片格式Image.open(path).convert(RGB).save(output, JPEG)3价格计算出来是负的利润率设太高或成本算错了检查公式售价 总成本 / (1 - 佣金比例 - 利润率)确保分母大于04翻译后的标题不通顺机器翻译质量差用人工审核流程翻译后先存为草稿人工优化后再上架5批量上架到一半被TEMU限流上架频率过高被识别为爬虫控制上架频率每小时不超过10个并在请求头里加随机延迟6商品提交后一直在审核TEMU的审核机制正常TEMU审核通常需要1-3天不是系统问题7无法找到TEMU的商品分类TEMU分类结构复杂用「获取相似元素列表」指令获取所有分类选项建立映射表推荐资源TEMU卖家后台帮助中心https://seller.temu.com/百度翻译开放平台申请API Keyhttps://api.fanyi.baidu.com/影刀RPA文件上传指令文档https://academy.yingdao.com/内容标签影刀RPATEMU上架跨境电商价格计算图片处理自动填写表单批量上架翻译API数据采集自动化运营转载请注明出处飞行社社区作者林焱