当爬网程序爬行完一个域时,我想执行一项操作(在我的例子中,将一个元组发送到一个 bolt )。
我发现 StormCrawler 甚至能够在给定的时间间隔后重新访问网站。在同时爬取多个域的场景下,在哪个组件中或者如何查看一个域何时爬行完成?
我当前的设置是将 StormCrawler 与 Elasticsearch 和 Kibana 结合使用。
最佳答案
请参阅“我什么时候知道爬网何时完成?”在 FAQ .
I saw that StormCrawler is able to do even revisit a website after a given interval.
StormCrawler 不会安排网站本身,而是安排单独的 URL。
In which component or how could I see when one domain is finished crawling in the scenario of crawling multiple domains simultaneously?
根据您正在爬网的站点数量,您可以编写一个自定义 Bolt,它将在 ES 中查询状态索引中的所有主机名,并检测那些没有更多状态为 DISCOVERED 的 URL 的主机名。
或者,自定义 Bolt 会跟踪您正在抓取的网站,并在过去 N 分钟内未获取特定网站的 URL 时触发操作。
关于java - StormCrawler 在爬行完一个域后执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49877898/