问题标签 [stormcrawler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何将 python bolt 集成到 Apache Storm 的 java 拓扑中?
我试图将一个简单的 python 螺栓集成到使用 Apache Storm 和 Storm Crawler SDK 创建的已配置风暴拓扑中。我按照此处提供的说明进行操作
但我不断收到错误:
我试图在 Storm-crawler 网站的示例爬虫示例提供程序中添加创建的螺栓。在我看来,python bolt 似乎没有从拓扑中的前一个组件获取流。
任何人都可以帮忙吗?
python - 如何将 python bolt 集成到使用 Storm Crawler SDK 构建的拓扑中
我试图将在 python 中创建的螺栓集成到使用 Storm-Crawler_SDK-1.7 和 Apache-Storm-1.1.0 组件构建的拓扑中。拓扑执行找不到可执行的 python 程序,并在完全不同的临时位置搜索它。当我尝试执行拓扑时,我经常收到此错误:
当拓扑中不包含 python 螺栓时,拓扑工作正常。
当我不在拓扑中使用 Storm Crawler SDK 组件时,python bolt 也可以正常工作。
任何人都可以帮忙吗?
web-crawler - 使用 StormCrawler 和 Elasticsearch 归档旧网站
当storm爬虫重新访问之前已经抓取过的网站时,它会更新elasticsearch索引中的相应文档。即,旧内容被新内容覆盖。
是否有任何 Stormcrawler 功能允许我们保留某些字段的旧版本并使用时间戳对其进行注释?
我们研究了 elasticsearch rollover api 和摄取管道。摄取管道看起来很有希望在更新操作上修改弹性搜索文档。有没有办法通过stormcrawler配置将管道参数(即?pipeline=xxx)附加到相关的elasticsearch请求中?
elasticsearch - Stormcrawler 速度慢,延迟高,爬取 300 个域
自大约 3 个月以来,我目前一直在努力解决这个问题。Crawler 似乎每 10 分钟获取一次页面,但在这之间似乎什么都不做。总体吞吐量非常慢。我正在并行抓取 300 个域。这应该使大约 30 页/秒,爬行延迟 10 秒。目前它大约是每秒 2 页。
拓扑在 PC 上运行
- 8GB内存
- 普通硬盘
- 酷睿处理器
- Ubuntu 16.04
Elasticsearch 安装在具有相同规格的另一台机器上。
在这里你可以看到来自 Grafana Dashboard 的指标
它们还反映在 Storm UI 中看到的进程延迟中:
我目前的 Stormcrawler 架构是:
使用配置(这里是最相关的部分):
这里是风暴配置(也只是相关部分):
你知道可能是什么问题吗?还是只是硬件的问题?
我已经尝试过的
- 将 fetcher.server.delay 增加到一个更高和更低的值,这并没有改变任何东西
- 减少和增加 fetcher 线程的数量
- 玩弄并行性
- 计算是否为网络带宽。带宽为 400mbit/s,平均页面大小为 0.5 MB,它将是 15MB/s,这将是 120mbit/s,这也不应该是问题
- 增加工人数量
你还有什么我应该检查的想法或可以解释缓慢获取的原因吗?也许它也只是缓慢的硬件?或者瓶颈是 Elasticsearch?
非常感谢您提前
编辑:
我将拓扑更改为两个工作人员并且经常出现错误
抓取过程仍然看起来更加平衡,但仍然没有获取很多链接
同样在运行拓扑几个星期后,延迟上升了很多
web-crawler - 是否可以在stormcrawler中按标签爬行?
现在我正在使用stormcrawler 来抓取网站。我想知道在风暴爬虫中可以通过<body>
标签或其他类似的东西进行爬网。<article>
我修改了 parsefilters.json 文件,如下所示,但它不起作用
请告诉我如何解决这个问题。谢谢
web-crawler - 将抓取限制在种子 url 的子页面
我有这一套,它根据种子爬取页面
{“类”:“com.digitalpebble.stormcrawler.filtering.host.HostURLFilter”,“名称”:“HostURLFilter”,“参数”:{“ignoreOutsideHost”:假,“ignoreOutsideDomain”:真}}
但是,我怎样才能仅限于种子的子页面。例如。如果我有一个种子为“ https://www.test.com/ ”,通过上述设置,爬虫还会抓取并添加诸如“ https://stg.test.com/ ”之类的网址及其子页面等。
如何将抓取限制为“ https://www.test.com/ ”以及该种子的子页面,例如“ https://www.test.com/test1 ”、“ https://www.test .com/test2 " 等
TIA。
selenium - 如何在 Storm crawler 中使用 selenium 插件
我们如何在 Storm crawler 中配置 selenium 插件,例如在原型项目中?在storm crawler中有一个使用selenium的代码。但我不知道如何使用它。
java - 在 StormCrawler 上获取拓扑以正确写入 warc 文件
在我的项目中,stormcrawler maven 原型似乎与 warc 模块不兼容。目前它只创建名称为“crawl-20180802121925-00000.warc.gz”的空 0 字节文件。我在这里错过了什么吗?
我尝试通过创建一个像这样的默认项目来启用warc写作:
然后像这样将依赖项添加到 pom.xml 中的 warc 模块
然后我将 WARCHdfsBolt 添加到 fetch 分组中,同时尝试写入本地文件系统目录。
无论我使用或不使用助焊剂在本地运行它,似乎都没有区别。您可以在这里查看演示存储库:https ://github.com/keyboardsamurai/storm-test-warc
web-crawler - 使 StormCrawler 能够爬取具有多个 spout 的单个域
我正在使用 StormCrawler 和 Elasticsearch 进行概念验证,以仅抓取一个域,几个主机 - 一个包含许多页面。有没有办法告诉stormcrawler不要将主机或域的所有url分组在一个spout中?
我按照 Youtube 教程进行设置,并将 spout 设置为 10 个并行度,但据我所知,风暴 UI 仅使用 1 个。如何让它传播单个域的 url,甚至一个主机覆盖所有的 spout?
谢谢!吉姆
web-crawler - 在本地模式下运行 StormCrawler 或安装 Apache Storm?
所以我试图弄清楚如何使用 ES 和 Kibana 安装和设置 Storm/Stormcrawler,如此处所述。
我从来没有在我的本地机器上安装过 Storm,因为我以前使用过 Nutch,而且我从来不需要在本地安装 Hadoop……我认为 Storm 可能是一样的(也许不是?)。
我现在想开始用 Stormcrawler 而不是 Nutch 爬行。
似乎如果我只是下载一个版本并将 /bin 添加到我的 PATH 中,我只能与远程集群通信。
似乎我需要根据这个设置一个开发环境,让我能够随着时间的推移开发不同的拓扑,然后在准备部署新拓扑时从我的本地机器上与远程集群通信。那正确吗?
因此,当我使用 Maven 构建 Stormcrawler 项目时,似乎我需要做的就是将 Storm 作为依赖项添加到我的 Stormcrawler 项目中?