影刀RPA 网页详情页批量采集:列表到详情跳转
影刀RPA 网页详情页批量采集列表到详情跳转作者林焱什么情况用什么采集列表页只能拿到标题和摘要完整信息在详情页里——商品详情、文章正文、公司信息等。需要在影刀RPA中先采集列表页的链接再逐个打开详情页提取深度数据。这个列表→详情的两级采集是网页数据采集最核心的模式。适用场景电商商品完整信息采集、新闻文章正文采集、企业黄页详情采集、招聘网站职位详情。怎么做完整流程设计1. 【打开网页】→ 列表页URL 2. 【提取相似元素】→ 提取列表页所有详情链接 3. 【循环遍历】→ 逐个打开详情页 4. 【等待元素出现】→ 等待详情页加载 5. 【提取数据】→ 提取详情页字段 6. [video(video-oniAuA6S-1784737862161)(type-csdn)(url-https://live.csdn.net/v/embed/525010)(image-https://v-blog.csdnimg.cn/asset/f4faa587144cb7070f19e8b36813806b/cover/Cover0.jpg)(title-店群矩阵自动化突破运营极限)] 7. 【翻页】→ 回到列表页翻下一页 8. 循环1-6直到所有页采完第一步采集列表页链接frombs4importBeautifulSoupimportrequestsdefget_detail_links(list_url,headersNone):从列表页提取所有详情页链接ifheadersisNone:headers{User-Agent:Mozilla/5.0...}responserequests.get(list_url,headersheaders,timeout10)soupBeautifulSoup(response.text,html.parser)links[]# 根据实际网站调整选择器itemssoup.select(.list-item a.title, .product-item a, .article-title a)foriteminitems:hrefitem.get(href,)ifnothref:continue# 处理相对路径ifhref.startswith(//):hrefhttps:hrefelifhref.startswith(/):hrefrequests.compat.urljoin(list_url,href)# 去重ifhrefnotinlinks:links.append(href)returnlinks# 采集多页链接defget_all_links(base_url,max_pages10):采集所有页的详情链接all_links[]forpageinrange(1,max_pages1):urlf{base_url}?page{page}linksget_detail_links(url)ifnotlinks:print(f第{page}页无链接停止)breakall_links.extend(links)print(f第{page}页获取{len(links)}个链接累计{len(all_links)}个)returnall_links第二步采集详情页数据importtimedefscrape_detail_page(url,headersNone):采集单个详情页ifheadersisNone:headers{User-Agent:Mozilla/5.0...}try:responserequests.get(url,headersheaders,timeout15)response.encodingresponse.apparent_encoding soupBeautifulSoup(response.text,html.parser)data{来源URL:url}# 标题data[标题]safe_text(soup.select_one(h1.title, h1, .detail-title))# 价格data[价格]safe_text(soup.select_one(.price, .detail-price))# 正文/描述data[描述]safe_text(soup.select_one(.description, .detail-content, .content))# 规格specssoup.select(.spec-item, .attr-item)forspecinspecs:labelsafe_text(spec.select_one(.label, .name))valuesafe_text(spec.select_one(.value, .text))iflabel:data[label]value# 图片imagessoup.select(.detail-image img, .gallery img)data[图片列表]|.join([img.get(src,)forimginimages])returndataexceptExceptionase:return{来源URL:url,错误:str(e)}defsafe_text(element):安全提取文本ifelement:returnelement.get_text(stripTrue)return第三步批量采集保存importpandasaspdimportosdefbatch_scrape_details(base_url,output_file,max_pages10,delay1):批量采集详情页# 1. 采集所有链接print(开始采集列表页链接...)all_linksget_all_links(base_url,max_pages)print(f共获取{len(all_links)}个详情链接)# 2. 逐个采集详情all_data[]fori,linkinenumerate(all_links,1):print(f正在采集第{i}/{len(all_links)}个:{link})datascrape_detail_page(link)all_data.append(data)# 每采集10条保存一次防止中途崩溃丢数据ifi%100:temp_dfpd.DataFrame(all_data)temp_df.to_excel(output_file,indexFalse)print(f 已保存{len(all_data)}条)# 延迟避免被封time.sleep(delay)# 3. 最终保存dfpd.DataFrame(all_data)df.to_excel(output_file,indexFalse)print(f采集完成共{len(df)}条保存到{output_file})returndf# 使用batch_scrape_details(base_urlhttps://example.com/products,output_filerC:\Data\product_details.xlsx,max_pages5,delay1.5)在影刀RPA中的完整流程【设置变量】all_data [] 【循环】页码 1 到 10 【打开网页】列表页URL 页码 【等待元素出现】.list-item 【提取相似元素数据】→ 获取所有详情链接 【循环】遍历每个链接 【打开新标签页】详情页URL 【等待元素出现】.detail-title 【提取数据】标题、价格、描述等 【关闭标签页】 【等待】1秒 【结束循环】 【点击元素】下一页按钮 【结束循环】 【写入Excel文件】all_data断点续采defresume_scrape(link_file,output_file,delay1):断点续采跳过已采集的链接# 读取所有链接withopen(link_file,r)asf:all_links[line.strip()forlineinfifline.strip()]# 读取已采集的链接scraped_urlsset()ifos.path.exists(output_file):existing_dfpd.read_excel(output_file)scraped_urlsset(existing_df[来源URL].tolist())# 只采集未完成的pending[lforlinall_linksiflnotinscraped_urls]print(f总共{len(all_links)}个已完成{len(scraped_urls)}个剩余{len(pending)}个)all_data[]ifscraped_urls:all_datapd.read_excel(output_file).to_dict(records)fori,linkinenumerate(pending,1):datascrape_detail_page(link)all_data.append(data)ifi%50:pd.DataFrame(all_data).to_excel(output_file,indexFalse)print(f已保存{len(all_data)}条)time.sleep(delay)pd.DataFrame(all_data).to_excel(output_file,indexFalse)returnlen(all_data)有什么坑坑1详情页结构不统一同样是详情页有的有价格有的没有有的多了个推荐区——采集代码报错中断# 解决所有提取都用safe_text返回空字符串而非报错defsafe_text(element):try:returnelement.get_text(stripTrue)ifelementelseexcept:return# 字段缺失时给默认值data[价格]safe_text(soup.select_one(.price))or未知坑2详情页打开失败某些链接404或超时导致整个采集中断temu店群自动化报活动案例# 解决try-except包裹记录失败继续下一个forlinkinall_links:try:datascrape_detail_page(link)all_data.append(data)exceptrequests.Timeout:print(f超时:{link})all_data.append({来源URL:link,错误:超时})exceptrequests.ConnectionError:print(f连接失败:{link})all_data.append({来源URL:link,错误:连接失败})time.sleep(5)# 等待网络恢复exceptExceptionase:print(f错误:{link}-{e})all_data.append({来源URL:link,错误:str(e)})坑3详情页需要登录列表页不需要登录但详情页需要登录才能看完整内容# 解决在影刀中用浏览器模式采集# 先【执行登录流程】保持登录态# 然后用【打开网页】【提取数据】而非requests# 或者在requests中带Cookiesessionrequests.Session()# 先登录获取Cookielogin_data{username:xxx,password:xxx}session.post(https://example.com/login,datalogin_data)# 后续请求自动带Cookieresponsesession.get(detail_url)坑4详情页数据是AJAX加载页面打开后内容是空的数据通过JS异步加载# 解决1找到API接口直接请求# F12 → Network → XHR → 找到数据接口api_urlfhttps://example.com/api/product/{product_id}responserequests.get(api_url,headersheaders)dataresponse.json()# 解决2用影刀浏览器等待# 【打开网页】→ 【等待元素出现】.detail-content超时10秒→ 【提取数据】坑5采集速度太快被封IP# 解决随机延迟 代理IP轮换importrandom# 随机延迟delayrandom.uniform(1,3)# 1-3秒随机time.sleep(delay)# 代理IP轮换proxy_pool[http://ip1:port,![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/840bab4293ab462fbe1a986bb44d820e.png#pic_center)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/fc8ec7b004f84b39aa4f6bcd4a4ec713.png#pic_center)http://ip2:port,]forlinkinall_links:proxy{http:random.choice(proxy_pool)}try:responserequests.get(link,headersheaders,proxiesproxy,timeout10)except:# 代理失败用本机IPresponserequests.get(link,headersheaders,timeout10)

相关新闻

鸿蒙 ArkTS 入门实战:宝宝尿布库存的首屏状态与点击反馈

鸿蒙 ArkTS 入门实战:宝宝尿布库存的首屏状态与点击反馈

鸿蒙 ArkTS 入门实战:宝宝尿布库存的首屏状态与点击反馈 前言 宝宝尿布库存是一个基于 ArkTS 和 ArkUI 声明式 UI 的鸿蒙示例项目,入口文件位于 entry/src/main/ets/pages/Index.ets。 本文围绕项目当前已经实现的页面展开,结合 宝宝尿布库…

2026/7/23 2:16:53阅读更多 →
开源项目商业化路径:从信任建立到价值变现的关键策略

开源项目商业化路径:从信任建立到价值变现的关键策略

开源项目能不能赚钱,关键看它到底解决了什么问题,以及这个问题是不是真的有人愿意买单。很多人一上来就纠结“开源了还怎么盈利”,但实际顺序应该是:先通过开源建立信任和流量,再考虑价值变现。 我自己参与和观察过不…

2026/7/23 2:16:53阅读更多 →
Linux下私有化部署MrDoc文档库的实践指南

Linux下私有化部署MrDoc文档库的实践指南

1. 为什么需要私有化部署的在线文档库?在Linux环境下工作时,我们经常需要处理各种技术文档、配置说明和项目资料。传统的本地文档管理方式存在几个明显痛点:文档分散在各个目录难以查找、多人协作时版本混乱、无法随时随地访问。而公有云文档…

2026/7/23 2:16:53阅读更多 →
低功耗 IPC 监控技术:AOV(Always On Video)全时录像

低功耗 IPC 监控技术:AOV(Always On Video)全时录像

注:本文为 “AOV” 相关合辑。 图片清晰度受引文原图所限。 略作重排,如有内容异常,请看原文。 一、技术背景与问题定义 安防监控与智能摄像头已广泛部署于街道、公路及家庭等场景。传统方案面临以下矛盾:设备全天开机功耗高&…

2026/7/23 3:41:07阅读更多 →
LangChain提示词工程与结构化输出实战

LangChain提示词工程与结构化输出实战

1. Prompt 模板与提示词工程概述在大语言模型(LLM)应用开发中,Prompt(提示词)是用户与模型之间沟通的桥梁。而提示词工程(Prompt Engineering)则是通过精心设计 Prompt 来引导模型生成高质量输出…

2026/7/23 3:41:07阅读更多 →
中国科协发布2026前沿科学问题、工程技术难题、产业技术问题(共30个)

中国科协发布2026前沿科学问题、工程技术难题、产业技术问题(共30个)

中国科协发布2026前沿科学问题、工程技术难题、产业技术问题(共30个) 目录中国科协发布2026前沿科学问题、工程技术难题、产业技术问题(共30个)〇、评选标准一、10个前言科学问题1.1 Hodge猜想1.2 磁约束核聚变燃烧等离子体1.3 电解液微环境演化机制1.4 人与自然互馈的地域分异…

2026/7/23 3:41:07阅读更多 →
2026年巴黎国际食品展:聚焦并加速全球农食品行业的发展

2026年巴黎国际食品展:聚焦并加速全球农食品行业的发展

距离2026年巴黎国际食品展(SIAL Paris 2026,10月17日至21日,巴黎北郊维勒班特展览中心)开幕仅剩几个月,本届展会发布了全新的《2026年SIAL洞察报告》。这是一份国际分析报告,指出了将深刻改变食品市场和消费…

2026/7/23 3:41:07阅读更多 →
Claude Team计划调整:2席位起订,降低企业AI协作门槛

Claude Team计划调整:2席位起订,降低企业AI协作门槛

这次我们来看 Anthropic 最新调整的 Claude Team 计划,这个变化直接降低了企业使用 Claude 的门槛。Claude Team 原本需要 5 个席位起订,现在降到了 2 个席位,月费仍保持每人 30 美元,但年付可享受 8 折优惠。对于中小团队来说&am…

2026/7/23 3:41:07阅读更多 →
MySQL中文乱码全解析:从原理到解决方案

MySQL中文乱码全解析:从原理到解决方案

1. 乱码问题的本质与常见场景当MySQL、phpMyAdmin和PHP三者之间出现中文乱码时,本质上都是字符编码不一致导致的。这种情况在Web开发中极为常见,尤其是新手在搭建LAMP环境时几乎都会遇到。我处理过上百个类似案例,发现乱码通常发生在以下几个…

2026/7/23 3:39:07阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:00:28阅读更多 →
从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:28阅读更多 →
油泥处理设备哪里能买到

油泥处理设备哪里能买到

油泥处理设备哪里有?这是许多从事油田、炼化、清罐业务的从业者最关心的问题。根据河南三丰环保设备有限公司的行业经验,选购油泥处理设备的核心在于设备能否适配当地环保法规与原料特性,而非单纯看价格。该公司总经理王钦田先生指出&#xf…

2026/7/23 0:00:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/22 22:56:18阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/22 18:55:50阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/22 18:55:50阅读更多 →