跳转到主要内容

HTML::LinkExtractor - 提取指定网站的内外部链接爬虫工具

爬虫工具概览

爬虫工具概览HTML::LinkExtractorHTML::LinkExtractor – 采集指定网站外部和内部链接的爬虫工具。支持多页面数据抓取,并可跳转至指定深度的内部页面,从而遍历网站所有页面并采集内外链。内置 CloudFlare 防护绕过工具,并可选择 Chrome 作为引擎,用于抓取由脚本加载数据的页面。其速度最高可达每分钟 2000 次请求 – 即每小时采集 120 000 个链接。

爬虫工具应用案例

采集网站的所有外部链接
  1. 添加 Parse to level 选项,在列表中选择值 10(跳转相邻页面直至第 10 层)。
  2. 添加 Result format 选项,将值设为 $extlinks.format('$link\n')(输出外部链接)。
  3. Queries (查询) 部分,勾选 Unique queries 选项。
  4. Results (结果) 部分,勾选 Unique string 选项。
  5. 在查询中输入需要抓取外部链接的网站链接。
下载示例

如何将示例导入 A-Parser

eJxtU01v2zAM/S9CgK5AlrSHXnxLgwZb4dZdm57SHISYztTIoirRWQrD/32U7NjJ
1ptIvsfHL9WCpN/5JwceyItkVQsb3yIRORSy0iTGwkrnwYXwSvxYPqRJkiqzuzuQ
kxtCx4geWwv6tMBstKTQeI6pnM2YIoU9aPbspa4Yc33VnOD34JzK4Ugo0JWSuJa2
hI4iRnAgzeJ+0gK+XYyC+fZmLi5Fs16PRUvxixgODHs96Xrqgy9yD0sMKkrD4F6w
9SjLqJNLghA96lxO6BAyyDxXoTOpW4UwlUH11aiPWKcnp8yW8Ww6BX7hsGQ3QUwS
nJ/HCldiFG3BaarI/9VyREKugrHwXO1Cci15Hyik9hxRBE7yBrJu2Ekt0My0joMe
YDH9baV0zlucFUz62RG/hmT/5Wj6Dk+leGV/HNfQZ4nWbfYwsHJMccuNG+S2tSoV
se3nWJmwmyt27gBsP7bHACvRQS/TZe7U+VAtmHAfw9ZmdnCdtXG2mXPnBk2htll3
c0dkZZb8GzIzx9JqCH2ZSmveiofn4UJmvltDMIYC/yXPo8TZPyJE7e9f2lKtU3yB
N6HAkid5qtql3EitX5/T04gYLoqN30Q2mU7ld4ueFzpRpsCpCESCLfJFcVvNuv+/
/S+vv/zFSd3wwt79U4sO3QUs+3hMnrfBP7b5C6wbebo=

与第一个案例类似,但在第 2 步中需要将值设为 $intlinks.format('$link\n')(输出内部链接)。

下载示例

如何将示例导入 A-Parser

eJxtU8tu2zAQ/BfCQBrAtZNDL7o5Roy2cOI0j5PjA2GtXNYUyZIrN4Ggf++QkiW7
zY27O7OzL9aCZdiHB0+BOIhsXQuX3iITORWy0izGwkkfyMfwWnx9vltm2VKZ/e0b
e7ll64HosbXgd0dgW8fKmoCYymGmFEs6kIbnIHUFzPVVc4I/kPcqpyOhsL6UjFra
EjqKGCnDGuJh0gI+XYyi+fpqLi5Fs9mMRUsJixSODHc96Xrqg0/yQM82qihNg3sB
616WSSeXTDF61Lmc8FvMIPNcxc6kbhXiVAbVF6N+pzoDe2V2wMP0isLC2xJuppQk
Ot+PFa7FKNkCaarE/9FyRMa+orEIqHYhUUveBwqpAyKKyUtsYNUNO6uFNTOt06AH
WEp/UymdY4uzAqRvHfFjyOq/HE3f4akUVvbHo4Y+S7JuVncDK7dLu0PjxqJtrUrF
sMPcVibu5grOPZHrx3YfYaX11Mt0mTt1HKojE+9j2NrMDa6zNs42c+7cWlOo3aq7
uSOyMs/4DSszt6XTFPsyldbYSqDH4UJmoVtDNIYC/yXPk8TZP2Jrdfj+1JbqvMIF
fokFlpjkqWqXciu1fnlcnkbEcFEwfjK7bDqVn50NWOhEmcJORSQy7SwuCm01m/7/
9r+8/vAXZ3WDhf0KDy06dhex8GFMAdvAj23+ApcrebQ=
仅跳转不包含单词 forum 的链接
  1. 添加 Parse to level 选项,在列表中选择值 3(跳转相邻页面直至第 3 层)。
  2. 添加 Result format 选项,将值设为 $query
  3. 添加过滤器。过滤对象选择 $followlinks.$i.link - Link,类型选择 Not contain string,字符串内容填写 forum
  4. Queries (查询) 部分,勾选 Unique queries 选项。
  5. Results (结果) 部分,勾选 Unique string 选项。
  6. 在查询中输入需要抓取链接的网站链接。
下载示例

如何将示例导入 A-Parser

eJxtVE1v2zAM/S/CDhuQJS2GXXxLgwbd4DZdm57SHISYzrTIkipRaQvD/33UR2xn
6ykh+R75+CG3DLk7uHsLDtCxYtMyE/+zglVQcy+RTZjh1oEN4Q27Wd+WRVEKdbh+
Q8t3qC0hemzL8N0AsbVBoZWjmKjIjClKOIIkz5FLT5hv3Qh+BGtFBSd8rW3DkaQk
BZnBPr14sO/Pz4qNuLWQCEFFhhcbokupXyWpDArCL9tOMnCdWErjTivkQo3yU1nf
kJ3Uk8MB9dBtt6fkbhmFBSnmcppn1Qcf+RHWOkmCwb0k6443sYGKI4ToNHX4+csU
30IGXlUi1OQyVQjTHqo+KfESBTq0Qu0JHwYhwC2tbsiNEJPE6ZwUbvK0Quc+8n8l
DivQepgwR2qXnLRUfaDm0lFE0Jg4bXaVl1i0TKu5lHGBAyymv/JCVnQd85pIPzLx
Y8jqvxxd3+G4FN3CqyUNfZZoXa1uB1alS72PW4z7bQSS7Rbaq7CbC3IeAEw/trsA
a7SFvkzOnKvTAzCgwuENW5ubwXXWxtlmzp10UbXYr/Ixn5BeremVrdRCN0ZC6Et5
KWkrDh6GC5m7vIZgDAL/JS9iibP3iVpL9/MxSTVW0AV+DwIbmuS4ak6541I+PZTj
CBsuiozfiKaYzfjX9PCnO93MWOAh7DUdFHXVbfvPQv/xaD/8OBRtR/v64+4TOjQX
sOSjKbn4yi67v8azl7c=

采集的数据

  • 外部链接数量
  • 内部链接数量
  • 外部链接:
    • 链接本身
    • 锚点文本
    • 去除 HTML 标签后的锚点文本
    • nofollow 参数
    • 完整的 <a> 标签
  • 内部链接:
    • 链接本身
    • 锚点文本
    • 去除 HTML 标签后的锚点文本
    • nofollow 参数
    • 完整的 <a> 标签
  • 包含所有采集页面的数组(在使用 Use Pages 选项时使用)

功能

  • 多页面数据抓取(页面跳转)
  • 跳转网站内部页面至指定深度(Parse to level 选项)——允许遍历网站所有页面,采集内部和外部链接
  • 页面跳转限制(Follow links limit 选项)
  • 自动去除锚点文本中的 HTML 标签
  • 识别每个链接的 nofollow 属性
  • 可选择将子域名视为网站内部页面
  • 支持 gzip/deflate/brotli 压缩
  • 识别并将网站编码转换为 UTF-8
  • 绕过 CloudFlare 防护
  • 选择引擎(HTTP 或 Chrome)

使用场景

  • 获取完整的网站地图(保存所有内部链接)
  • 获取网站的所有外部链接
  • 检查指向自己网站的反向链接

查询

在查询中需要指定要从中采集链接的页面链接,或者在使用 Parse to level 选项时指定入口点(例如网站首页):

https://lenta.ru/
https://a-parser.com/wiki/index/

结果输出示例

A-Parser 凭借内置的 Template Toolkit 模板引擎支持灵活的结果格式化,允许以任意形式输出结果,也可以输出为 CSV 或 JSON 等结构化格式。

结果格式:

External links: $extcount\n$extlinks.format('$link\n')
Internal links: $intcount\n$intlinks.format('$link\n')

结果示例:

External links: 12
https://www.youtube.com/c/AParser_channel
https://t.me/a_parser
https://en.a-parser.com/
https://spyserp.com/ru/
https://sitechecker.pro/
https://arsenkin.ru/tools/
https://spyserp.com/
http://www.promkaskad.ru/
https://www.youtube.com/channel/UCvypGICrfCky8tPtebmIvQw
https://www.facebook.com/AParserRu
https://twitter.com/a_parser
https://www.youtube.com/c/AParser_channel

Internal links: 129
https://a-parser.com/
https://a-parser.com/
https://a-parser.com/a-parser-for-seo/
https://a-parser.com/a-parser-for-business-and-freelancers/
https://a-parser.com/a-parser-for-developers/
https://a-parser.com/a-parser-for-marketing-and-analytics/
https://a-parser.com/a-parser-for-e-commerce/
https://a-parser.com/a-parser-for-cpa/
https://a-parser.com/wiki/features-and-benefits/
https://a-parser.com/wiki/parsers/

可能的设置

参数名称默认值描述
Good statusAll选择哪些服务器响应将被视为成功。如果数据抓取时收到其他响应,将使用另一个代理重试请求
Good code RegEx可以指定用于检查响应代码的正则表达式
Ban Proxy Code RegEx可以根据服务器响应代码临时封禁代理(Proxy ban time)
MethodGET请求方法
POST body使用 POST 方法时发送到服务器的内容。支持变量 $query – 请求 URL,$query.orig – 原始查询,以及在使用 Use Pages 选项时的页码 $pagenum
Cookies可以为请求指定 cookies。
User agent_自动插入当前版本 Chrome 的 user-agent_请求页面时的 User-Agent 请求头
Additional headers可以指定自定义请求头,支持模板引擎功能并使用请求构造器中的变量
Read only headers仅读取响应头。在不需要处理内容的情况下,可以节省流量
Detect charset on content根据页面内容识别编码
Emulate browser headers模拟浏览器请求头
Max redirects count0爬虫工具将遵循的最大重定向次数
Follow common redirects允许在同一域名内进行 http <-> https 和 www.domain <-> domain 的重定向,不受 Max redirects count 限制
Max cookies count16保存 cookies 的最大数量
EngineHTTP (Fast, JavaScript Disabled)允许选择 HTTP 引擎(速度更快,无 JavaScript)或 Chrome 引擎(速度较慢,启用 JavaScript)
Chrome Headless如果启用此选项,将不显示浏览器界面
Chrome DevTools允许使用 Chromium 调试工具
Chrome Log Proxy connections如果启用此选项,日志中将输出 chrome 连接信息
Chrome Wait Untilnetworkidle2定义何时认为页面已加载。关于取值的详细信息。
Use HTTP/2 transport定义是否使用 HTTP/2 代替 HTTP/1.1。例如,Google 和 Majestic 如果使用 HTTP/1.1 会立即封禁。
Don't verify TLS certs禁用 TLS 证书验证
Randomize TLS Fingerprint此选项允许通过 TLS 指纹绕过网站封禁
Bypass CloudFlare自动绕过 CloudFlare 检查
Bypass CloudFlare with Chrome(Experimental)通过 Chrome 绕过 CF
Bypass CloudFlare with Chrome Max Pages20通过 Chrome 绕过 CF 时的最大页面数
Subdomains are internal是否将子域名视为内部链接
Follow linksInternal only跳转哪些链接
Follow links limit0Follow links 限制,应用于每个唯一域名
Skip comment blocks是否跳过注释块