影刀RPA爬取京东商品
需求
- 商品ID item_id
- 商品链接 item_link
- 标题 item_title
- 门店名称 store
- 封面 cover_link
- 原价 original_cost
- 折扣价 discount_cost
- 品牌 brand
- 型号 type
- 评论数 comments
建表
1 | CREATE TABLE IF NOT EXISTS `jd_items` ( |
流程
主流程
For次数循环点击下一页5次(实现翻页)

ForEach列表循环每个商品,获取详情页链接传入子流程
测试环境需要只跑一遍时可启用退出循环

调用子流程爬取各项信息
可设置item_link默认值,可单独运行子流程对该网页进行爬取测试

获取型号处理

设置一个变量(列表)保存爬取的数据,输出到主流程,插入到relist(列表)作为二维列表用于批量插入数据库

id、写入时间、更新时间为自动填充,不需要插入,因此插入语句要写列名(若完全插入则只需写表名不用写列名,但要保证插入列数与表列数一致)

odbc程序添加数据库连接

影刀连接数据库配置

本地插入测试完成

插入服务数据库完成

Xpath
XPath(XML Path Language)是一种用于在 XML 或 HTML 文档中定位和选取节点(元素、属性、文本等) 的语言。它最初为 XML 设计,由于 HTML 可以被视为 “不严格的 XML”,因此 XPath 也广泛用于 HTML 文档的解析(比如网页爬虫、数据提取等场景)。
核心用途
- 在 XML/HTML 文档中精准定位节点(如某个标签、属性或文本)。
- 从文档中提取特定数据(如网页中的标题、链接、表格内容等)。
- 作为其他技术的基础(如 XSLT 转换、XQuery 查询等)。
XPath 常与以下工具配合使用:
- Python:
lxml
、Scrapy
(内置 XPath 解析)、BeautifulSoup
(需配合 lxml 解析器)。 - 浏览器:F12 开发者工具的 “Elements” 面板中,右键节点可直接复制 XPath。
- 其他:Java 的
Jsoup
、C# 的HtmlAgilityPack
等。
基本语法:节点选取规则
XPath 的语法类似文件系统的路径表示,通过 “路径表达式” 定位节点。以下是最常用的规则:
表达式 | 含义 | 示例 |
---|---|---|
/ |
从根节点开始选取(绝对路径)。 | /html/body :选取根节点html 下的直接子节点body 。 |
// |
从任意位置选取节点(相对路径,忽略层级)。 | //a :选取文档中所有<a> 标签(无论在哪个层级)。 |
. |
选取当前节点。 | ./p :选取当前节点下的直接子节点<p> 。 |
.. |
选取当前节点的父节点。 | //div/.. :选取所有<div> 的父节点。 |
@ |
选取属性。 | //a/@href :选取所有<a> 标签的href 属性值(即链接地址)。 |
text() |
选取文本内容。 | //h1/text() :选取所有<h1> 标签内的文本。 |
[n] |
选取第 n 个节点(索引从 1 开始)。 | //li[1] :选取所有<li> 中的第一个。 |
[@属性] |
按属性筛选节点。 | //a[@class] :选取所有带有class 属性的<a> 标签。 |
[@属性=值] |
按属性值筛选节点(值需用单 / 双引号包裹)。 | //a[@class='active'] :选取class 为active 的<a> 标签。 |
[条件] |
按条件筛选(支持逻辑运算、比较运算)。 | //book[price>30] :选取子节点price 大于 30 的<book> 标签。 |
示例:HTML 中提取数据
假设有一段 HTML 代码如下:
1 | <html> |
用 XPath 提取数据的示例:
- 提取
<h1>
的文本://h1/text()
→ 结果:Python 教程
。 - 提取
<h1>
的title
属性://h1/@title
→ 结果:主标题
。 - 提取所有
<a>
的链接://a/@href
→ 结果:/basic
、/advance
。 - 提取第二个
<li>
中的文本://ul/li[2]/a/text()
→ 结果:高级特性
。