影刀RPA实操指南:京东商品数据批量采集——搜索页到详情页的完整抓取
拼多多之外,京东是另一个常见的采集目标。但京东有自己的特点:反爬比拼多多严、SKU数据在详情页、价格会根据登录状态变化。
这篇专门讲如何用影刀RPA稳定采集京东商品数据。
京东采集前的准备
先理清你要采什么
京东商品数据分两个层次:
| 数据层次 | 数据字段 | 获取难度 |
|---|---|---|
| 搜索列表页 | 商品名、价格(登录前参考价)、评价数、商品ID | 低 |
| 商品详情页 | SKU详细价格、库存、规格参数、多图 | 中 |
如果只需要商品名和价格,列表页就够了。如果要规格参数和精确SKU价格,得进详情页。
要不要登录
京东不登录也能看价格,但:
拼多多店群自动化上架方案
- 未登录的价格是"参考价",不是实际到手价
- 登录后才能看到会员价/plus价格
- 部分品类(如手机)未登录看到的是虚高价
建议:做竞品监控时,统一用未登录状态采集,保证数据口径一致。
搜索列表页采集
打开搜索页
# 直接构建搜索URL(比搜索框输入更稳定) URL格式:https://search.jd.com/Search?keyword={关键词}&page={页码}  例:https://search.jd.com/Search?keyword=羽绒服&page=1注意:京东搜索页码是1开始,但URL里的page参数是奇数(1、3、5、7…)不是1、2、3。翻页逻辑要用page = page + 2。
定位商品列表
京东搜索结果商品卡片的XPath:
# 商品列表容器 //ul[@id="J_goodsList"]/li[@class="gl-item"] # 商品名称 .//div[contains(@class,"p-name")]//em # 价格(未登录) .//div[contains(@class,"p-price")]//i # 评价数 .//div[contains(@class,"p-commit")]//a # 商品ID(从data-sku属性取) // li[@data-sku] → 属性值就是SKU_ID实际捕获时:用影刀的"捕获元素"功能在京东搜索页上选一个商品卡片,然后手动改XPath为上面更通用的写法。
完整翻页采集流程
# 京东搜索结果翻页(特殊:奇数页码)keyword='羽绒服'max_pages=20# 最多采集20页all_data=[]forpage_numinrange(1,max_pages*2,2):# 生成奇数序列url=f'https://search.jd.com/Search?keyword={keyword}&page={page_num}'# 影刀:打开网页open_url(url)# 等待商品列表出现wait_element('//ul[@id="J_goodsList"]',timeout=30)# 等待价格加载(异步的)wait(2)# 采集当前页items=get_similar_elements('//ul[@id="J_goodsList"]/li[@class="gl-item"]')ifnotitems:break# 没有更多商品foriteminitems:title=get_text(item,'.//div[contains(@class,"p-name")]//em')price=get_text(item,'.//div[contains(@class,"p-price")]//i')sku_id=get_attr(item,'data-sku')all_data.append({'标题':title,'价格':price,'SKU_ID':sku_id})random_wait(2,5)# 翻页等待商品详情页采集
从列表页拿到SKU_ID后,进详情页采集更丰富的数据:
# 京东商品详情页URL格式 https://item.jd.com/{SKU_ID}.html详情页关键数据位置
# 商品名称(详情页) //div[@class="sku-name"] # 价格(会员价/普通价) //span[@id="jd-price"] # 商品规格参数表 //div[@id="detail"]//table[@class="parameter-list"] # 库存状态 //span[@id="store-prompt"] # 评价总数 //a[@id="comment-count"]动态价格说明:京东的价格是通过API动态加载的,不是直接在HTML里。需要等待1~2秒让价格渲染出来,再捕获。
规避封禁的核心策略
TEMU店群如何管理运营?
京东的反爬比拼多多激进,实测有效的三条:
策略一:降低采集速度
列表页每页36秒,详情页每页510秒。比拼多多多等1倍。
策略二:使用合适的User-Agent
设置成Chrome 120正式版的UA,不要用Headless Chrome的UA(会被秒识别)。
策略三:随机访问路径
不要直接搜索→列表→翻页这种机械规律。在列表翻页中间偶尔点一下商品详情页,模仿真人浏览路径。
# 每翻3页,随机进1个商品详情页"浏览"一下ifpage_num%3==0:random_item_url=f'https://item.jd.com/{random_sku_id}.html'open_url(random_item_url)scroll_page(800)# 往下滚一屏random_wait(3,8)# 模拟阅读数据存储建议
京东采集的数据建议存SQLite而不是Excel:
- 每批次几千条很正常,SQLite处理速度远快于Excel
- 便于按SKU_ID去重
- 方便多次采集对比历史数据(价格趋势)
#影刀RPA #RPA自动化 #京东采集 #数据采集 #电商自动化
作者:林焱
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。