web-crawler - 如何限制stormcrawler中的爬行深度
问题描述
我的用例是仅每天从网站的任何页面和外链(仅存在于该页面上)中提取文本。例如,我想抓取此页面上( https://www.indiatimes.com/news/world ) 的所有链接。这给了我每天几篇新鲜的新闻文章。每天这个页面上大约有 30-40 个新闻文章链接,我想抓取并存储在我的数据库中。
这些是我现在拥有的一些配置-
这是 crawler-conf.yaml 的一部分 -
parser.emitOutlinks: true
perser.emitOutlinks.max.per.page: 0
track.anchors: true
metadata.track.path: true
metadata.track.depth: true
这是 urlfilters.json 的一部分-
{
"class": "com.digitalpebble.stormcrawler.filtering.depth.MaxDepthFilter",
"name": "MaxDepthFilter",
"params": {
"maxDepth": 0
}
}
在这些配置上,这个例如页面提供了超过 35000 次点击。它会抓取我不需要的整个网站。它从外链获得越来越多的网址。如果我将 maxdepth 参数更改为 1 或 0 或 2,爬行的行为保持不变。maxdepth 参数是否适合这个用例?我想将爬行的这种递归性质限制为仅种子 URL 和种子 URL 的外链。maxdepth 参数实际上是什么意思?我应该怎么做才能限制爬网的扩展。
我正在使用 stromcrawler 1.16。
解决方案
这正是最大深度过滤器的用途。请记住,您需要使用mvn clean package重建您的 JAR,以使对 urlfilters.json 的任何更改生效。
如果您在解析页面时不想要任何外链,只需在配置中将parser.emitOutlinks设置为 false。
推荐阅读
- python - 是否可以在不使用循环更新变量时运行函数?
- go - 使用 go get 命令安装 Fabric CA 时遇到错误
- flutter - Flutter 屏幕制作思路
- javascript - 无法删除表单自定义验证的项目类
- python - 调用所有数据库表名创建列表 || pyodbc
- c - 这是 Cs50 问题 set1 现金。我不知道这段代码有什么问题可以帮助我
- https - 当证书不能在托管服务器上直接访问时,可以通过 SSL 运行 nest.js 服务
- c# - 在基于 UI 的应用程序中使用 await Task.Run(() => someMethodAsync()) 与 await someMethodAsync()
- css - React 元素的样式不适用于外部 css 文件
- blogger - Blogger 中的“重定向域”设置是 302 还是 301 重定向?