正则表达式的使用
概述
在 A-Parser 中使用 Perl/JavaScript 兼容的正则表达式,可用于:
有关正则表达式的详细文档可以在以下资源中找到:
在 A-Parser 中,可以使用正则表达式处理任何结果,为此需要使用 Parse custom results (使用正则) 选项:

使用特点与标志
- 正则表达式书写时不带分隔符
// - 支持以下标志:
- i - 搜索时不区分大小写
- s - 点号匹配所有字符,包括换行符
- g - 全局搜索或替换
此外,可以在正则表达式本身中指定标志,例如使用 m 标志(多行模式 - ^ 和 $ 分别作为行首和行尾)在整个文本(或页面代码,取决于正则表达式的应用对象)的每一行中搜索单词 test:
(?m)^(.+?test.+?)$
提取任意信息

通过 Parse custom results (使用正则) 选项或 结果生成器,可以使用正则表达式从数据抓取结果中提取任意信息,例如从 HTML 源代码或已准备好的结果中提取
- 在 Parse result (应用于) 中选择爬虫工具的结果,这可以是 简单结果或数组
- 正则表达式不带分隔符,随后可以指定标志
- 在 Result type (结果类型) 中指定结果类型 -
Flat(简单结果)或Array(数组)。如果选择数组作为原始结果或使用了正则表达式的 g 标志,则结果将始终保存到数组中。在 Name (名称) 字段中指定数组名称 - 正则表达式的每个捕获括号都可以保存为单独的元素,元素名称填写在相应的 $1 to, $2 to... 字段中 - 其中数字表示捕获括号的编号
- 在 RegEx (正则) 字段中可以使用 模板引擎,这允许将查询作为正则表达式的一部分使用
创建的新结果可用于 结果格式化、结果生成器、过滤 和 结果去重,或用于下一个 Parse custom results (使用正则) 选项。
该选项与使用 RegEx Match 时的 结果生成器 类似
从 HTML 源代码抓取图片链接示例

为了解决这个问题,我们使用爬虫工具
Net::HTTP 来获取页面的源代码。
对 $data(下载的页面)应用带有 isg 标志的正则表达式,将结果保存到 images 数组的 src 元素中。
在结果格式中指定通过换行符输出所有 src 元素。
最终针对查询 http://a-parser.com/ 进行数据抓取,在结果文件中将获得以下列表:
/img/lang/en.png
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
下载示例
eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=
正则表达式构造器
从 1.2.78 版本开始,添加了正则表达式构造器。
可以在 Tools -> Regex Builder 选项卡中找到它。也可以直接在 测试抓取 中发送获取到的页面代码。为此需要开启 debug 模式并点击 Go to RegEx Builder 链接。

在构造器中可以选择将要使用生成的正则表达式的编程语言。
要使用构造器,需要在左侧字段中粘贴源文本(或者在从 测试抓取 跳转 Go to Regex Builder 时自动粘贴)。在右侧配置未来正则表达式的参数。
要编写一个简单的正则表达式(例如,为了获取标题),只需指定所需的正则表达式元素即可。
- 在 Before group (组之前) 字段中输入位于所需信息之前的字符
- 在 After group (组之后) 字段中输入位于所需数据之后的字符
- 在 组开始于 字段中指定搜索字符串应以哪些字符开始
- 在 Group ends with (组结束于) 字段中指定搜索字符串末尾应有的字符

如上图所示,我们正在编写一个用于提取网站 title 的正则表达式。在组之前放置 <title>,在组之后放置 </title>,此外作为示例,指定搜索字符串以字母 W 开始。
为了对生成的正则表达式进行全面测试,可以开启所需的标志:g、s 和 i。
还可以编写包含 2 个或更多组的更复杂的正则表达式。
例如,尝试编写一个正则表达式来收集 <li> 列表中的所有链接和锚点。为此我们需要开启 g 标志并添加另一个搜索组,因为第一组将是链接,第二组将是锚点。

为两组设置好所需参数后,得到正则表达式:
<li><a href="(.+?)">(.+?)<\/a
要检查正则表达式,请点击 测试 按钮:

执行正则表达式后,下方会显示其工作结果:完整字符串和捕获的组。双击结果表中的任何元素,起始文本将滚动到该匹配项所在的位置。
有用链接
🔗 正则表达式入门指南
我叫 Vitaliy Kotov,对正则表达式略知一二。在本文中,我将介绍它们的基础知识...
🔗 正则表达式 (regexp) —— 基础
正则表达式是一种用于文本搜索和替换的机制。可用于字符串、文件或多个文件中...
🔗 ⏩抓取工业设备目录
在工业设备目录数据抓取中使用正则表达式的示例
🔗 ⏩抓取 Booking.com 资源
在抓取 Booking.com 资源中使用正则表达式的示例
🔗 ⏩查找联系方式页面
在抓取联系方式页面中使用正则表达式的示例