影刀RPA 网页卡片列表采集:流式布局提取

发布时间:2026/7/23 3:30:09

影刀RPA 网页卡片列表采集:流式布局提取
影刀RPA 网页卡片列表采集流式布局提取作者林焱什么情况用什么现在很多网站的列表页不是传统表格而是卡片式布局——商品卡片、新闻列表、视频列表——每个卡片是一个独立的div块包含标题、图片、价格、链接等信息。这种布局用传统的表格提取方法取不到数据需要逐个卡片解析。适用场景电商商品列表采集、新闻资讯列表采集、视频网站内容列表、社交媒体帖子列表。怎么做卡片列表采集基本流程1. 【打开网页】→ 打开商品列表页 2. 【等待元素出现】→ 等待卡片容器加载 3. 【执行Python代码】→ 解析所有卡片 4. 【翻页】→ 点击下一页或滚动加载 5. [video(video-9YBE4VmK-1784736622564)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架)] 6. 循环2-4直到采集完解析卡片数据frombs4importBeautifulSoupimportrequestsdefscrape_card_list(url):采集卡片式列表headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64)}responserequests.get(url,headersheaders,timeout10)soupBeautifulSoup(response.text,html.parser)# 找到所有卡片需要根据实际网站调整选择器cardssoup.select(.product-card)# 或 .item / .card / [data-id]results[]forcardincards:item{}# 标题title_elcard.select_one(.title)# 或 h3 / .nameitem[标题]title_el.get_text(stripTrue)iftitle_elelse# 价格price_elcard.select_one(.price)# 或 .cost / .amountitem[价格]price_el.get_text(stripTrue)ifprice_elelse# 链接link_elcard.select_one(a)item[链接]link_el.get(href,)iflink_elelse# 图片img_elcard.select_one(img)item[图片]img_el.get(src,)orimg_el.get(data-src,)ifimg_elelse# 评分rating_elcard.select_one(.rating)item[评分]rating_el.get_text(stripTrue)ifrating_elelseresults.append(item)returnresults# 使用datascrape_card_list(https://example.com/products)在影刀RPA中用可视化指令采集1. 【打开网页】→ 商品列表URL 2. 【等待元素出现】→ 选择器 .product-card 3. 【提取相似元素数据】→ 配置每个字段的子选择器 - 标题.product-card .title - 价格.product-card .price - 链接.product-card a → 属性href - 图片.product-card img → 属性src 4. 【点击元素】→ 下一页按钮 5. 【循环】→ 直到没有下一页滚动加载流式布局很多卡片列表不用翻页而是滚动到底部自动加载更多importtimedefscrape_infinite_scroll(url,max_scrolls20):采集无限滚动列表需配合影刀浏览器all_items[]forscroll_countinrange(max_scrolls):# 在影刀中用【执行JavaScript代码】滚动# window.scrollTo(0, document.body.scrollHeight)# 等待新内容加载time.sleep(2)# 获取当前页面所有卡片![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/88141df57a2b42e09306edc0ef40f6de.png#pic_center)# 在影刀中用【获取网页源代码】或【提取相似元素数据】current_cardsget_current_cards()# 需要实现# 检查是否有新数据iflen(current_cards)len(all_items):print(f第{scroll_count1}次滚动无新数据停止)breakall_itemscurrent_cardsprint(f第{scroll_count1}次滚动共{len(all_items)}条)returnall_items在影刀RPA中用JavaScript节点滚动// 影刀【执行JavaScript代码】节点window.scrollTo(0,document.body.scrollHeight);多字段卡片采集defscrape_product_cards(html):采集商品卡片的多字段信息soupBeautifulSoup(html,html.parser)cardssoup.select([class*product])results[]forcardincards:item{}# 多层嵌套选择item[商品名]safe_extract(card,.title, .name, h3)item[价格]clean_price(safe_extract(card,.price, .cost))item[原价]clean_price(safe_extract(card,.original-price, .old-price))item[销量]safe_extract(card,.sales, .sold)item[店铺]safe_extract(card,.shop-name, .store)# 标签可能有多个tagscard.select(.tag, .label, .badge)item[标签]|.join([t.get_text(stripTrue)fortintags])# 链接处理相对路径linkcard.select_one(a)iflink:hreflink.get(href,)ifhref.startswith(//):hrefhttps:hrefelifhref.startswith(/):hrefhttps://example.comhref item[链接]href results.append(item)returnresultsdefsafe_extract(parent,selector_str):安全提取文本elparent.select_one(selector_str)returnel.get_text(stripTrue)ifelelsedefclean_price(text):清理价格文本importreifnottext:return# 去掉¥符号和逗号textre.sub(r[¥,],,text)returntext.strip()有什么坑坑1卡片选择器不稳定网站改版后class名变了选择器失效# 问题固定class名容易失效cardssoup.select(.product-card-item-2024)# 解决用多个选择器做后备cardssoup.select(.product-card, .item-card, [data-product-id], .goods-item)# 或者用更稳定的属性cardssoup.select([data-sku])# 用data属性更稳定坑2图片懒加载导致src为空TEMU店群矩阵自动化运营核价报活动# 问题img的src是占位图真实图片在data-src里img_elcard.select_one(img)srcimg_el.get(src)# 拿到的是loading.gif# 解决优先取data-srcsrcimg_el.get(data-src)orimg_el.get(data-original)orimg_el.get(src,)# 或者在影刀中先滚动到图片位置触发加载# 用【滚动到元素】指令坑3卡片数量和实际不符页面显示20个卡片但只提取到15个——有些卡片是广告或推荐位结构不同# 解决加验证条件只提取有效卡片forcardincards:# 必须有标题和价格才算有效商品卡片titlesafe_extract(card,.title)pricesafe_extract(card,.price)ifnottitleornotprice:continue# 跳过广告卡片item{标题:title,价格:price}results.append(item)坑4列表数据重复滚动加载时新数据追加到页面但每次都重新提取所有卡片导致重复# 解决用唯一标识去重seen_idsset()results[]forcardincards:# 用商品ID去重card_idcard.get(data-id)orcard.get(data-sku)ifcard_idandcard_idinseen_ids:continue![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6ac27ab1de034091968fa611c70866e1.png#pic_center)ifcard_id:seen_ids.add(card_id)itemparse_card(card)results.append(item)坑5异步加载内容缺失卡片的某些字段如销量、评价数是异步加载的首次请求时还没有# 解决1用影刀浏览器等待元素加载# 【等待元素出现】→ 销量选择器 → 超时5秒# 解决2找到AJAX接口直接请求# F12 → Network → 找到返回销量数据的API![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4692f99a839a49378c5ceea14d2fa3d8.png#pic_center)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/04ecc855ead04b36aff487fda013e3c8.png#pic_center)sales_apifhttps://example.com/api/product/{product_id}/statssales_responserequests.get(sales_api,headersheaders)sales_datasales_response.json()item[销量]sales_data.get(sold_count,)

相关新闻

Claude Code系统提示词优化:从臃肿到精简的工程实践

Claude Code系统提示词优化:从臃肿到精简的工程实践

2026/7/23 3:20:09

如果你正在使用 Claude Code 进行企业级项目开发,可能会遇到一个让人头疼的问题:系统提示词(System Prompt)越来越长,维护成本急剧上升。传统的做法是为每个功能模块编写详细的系统提示词,结果发现提示词文…

AI服务成本优化:Token经济与开源模型部署实战指南

AI服务成本优化:Token经济与开源模型部署实战指南

2026/7/23 3:20:09

如果你是一名开发者,最近在考虑接入AI能力,可能会发现一个奇怪的现象:同样的功能,在美国调用API的成本可能只是国内的几十分之一。这不是错觉,而是当前AI政策环境下的真实成本鸿沟。这种成本差异并非单纯的市场竞争结果…

Anthropic IPO概率仅4-7%:AI公司融资策略与技术生态影响分析

Anthropic IPO概率仅4-7%:AI公司融资策略与技术生态影响分析

2026/7/23 3:20:09

最近在AI投资圈有个热门话题:Anthropic这家备受瞩目的AI公司到底会不会在9月前IPO?根据Apodex的最新预测,这个概率只有4-7%。作为技术从业者,我们不仅要关注技术本身,也要了解技术公司的商业动态,因为这直接…

C++格式化输出全解析:从printf到iostream,打造专业数据展示

C++格式化输出全解析:从printf到iostream,打造专业数据展示

2026/7/23 4:30:12

1. 项目概述:为什么C格式化输出值得深究?在C的日常开发中,尤其是调试、日志记录、数据展示或者开发命令行工具时,我们几乎无时无刻不在和输出打交道。很多初学者,甚至一些有经验的开发者,往往满足于用std::…

为什么你的AI图片总被客户拒稿?揭秘商业摄影效果的4个硬性指标(分辨率/光影逻辑/材质真实度/品牌一致性)

为什么你的AI图片总被客户拒稿?揭秘商业摄影效果的4个硬性指标(分辨率/光影逻辑/材质真实度/品牌一致性)

2026/7/23 4:30:12

更多请点击: https://intelliparadigm.com 第一章:为什么你的AI图片总被客户拒稿? AI生成图像正迅速融入商业设计流程,但大量设计师反馈:客户反复拒稿,理由模糊如“不够真实”“风格不统一”“细节失真”。…

防火墙保护服务器

防火墙保护服务器

2026/7/23 4:30:12

DOS攻击 DOS攻击介绍: Dos攻击:是一种拒绝服务攻击,常用来使服务器或者网络瘫痪(一对一) DDos攻击:分布式拒绝服务攻击(群殴) DOS攻击目的: 1、消耗带宽 2、消耗服务器性…

AI模型选型与优化:核心痛点与实战指南

AI模型选型与优化:核心痛点与实战指南

2026/7/23 4:30:12

1. AI模型选型的核心痛点解析"AI选不对,调试全白费"这句话在业内流传已久,我从业十年间见过太多团队在模型调试环节投入80%精力,最终效果却不如换用合适的基础模型。2023年某电商推荐系统案例中,某团队耗时三个月优化XG…

基于Qt与C++从零构建HTTP代理服务器:原理、实现与实战

基于Qt与C++从零构建HTTP代理服务器:原理、实现与实战

2026/7/23 4:30:11

1. 项目概述:为什么我们需要自己动手写一个HTTP代理服务器? 最近在调试一个网络应用时,我遇到了一个典型的“502 Bad Gateway”错误。这个错误提示指向了一个本地代理端口,让我意识到,很多开发者和测试人员其实每天都在…

基于LLM的自然语言到结构化查询框架设计与实践

基于LLM的自然语言到结构化查询框架设计与实践

2026/7/23 4:20:11

这次我们来看一个专门解决自然语言访问领域特定元数据问题的框架项目。这个框架的核心价值在于提供了一套可复用的方法论,让开发者能够快速构建基于大语言模型的查询生成系统,将自然语言问题自动转换为结构化查询。对于需要处理复杂元数据查询的场景&…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/23 3:40:08

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

企业级AI搜索落地选型实战手册(含LLM+RAG+Hybrid架构对比矩阵与ROI测算模板)

2026/7/23 0:09:56

更多请点击: https://kaifayun.com 第一章:企业级AI搜索落地选型实战手册(含LLMRAGHybrid架构对比矩阵与ROI测算模板) 企业级AI搜索系统落地成败,核心在于技术选型与业务价值的精准对齐。盲目堆砌大模型能力或过度依赖…

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

TM4C129LNCZAD外设实战:LCD、比较器与PWM寄存器配置详解

2026/7/23 0:09:56

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM Cortex-M内核的微控制器项目中,深入理解并熟练配置芯片的片上外设,是从“点亮LED”迈向“实现复杂系统功能”的关键一步。Tiva™ TM4C129LNCZAD作为TI公司Cortex-M4F家族中的高性能成员…

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

AtomCode `fmt_dur` 争议溯源:两个函数、三段演进、四个事实

2026/7/23 0:09:56

一、快速声明与争议背景本文是对 AtomCode 终端 spinner 时长显示 fmt_dur 相关说法的事实性核验。2026 年 7 月 CSDN 上出现两篇互相矛盾的博文,近期又有 AI 在对话中输出格式描述 XhYm / YmZs / Zs。本文基于 AtomCode 仓库 main4677ddfa 及全分支 Git 历史给出可…