返回介绍

11.7 运行分布式爬取

发布于 2024-01-30 22:48:37 字数 1617 浏览 0 评论 0 收藏 0

我通常使用4个终端查看爬取的完成进度。为了使本节自成一体,因此我还为你提供了打开到相关服务器终端的vagrant ssh命令(见图11.3)。

图11.3 使用4个终端监控爬取

在终端1中,我喜欢监控多台服务器的CPU和内存使用率。这有助于识别和修复潜在问题。要想启动它,可运行如下命令。

$ alias provider_id="vagrant global-status --prune | grep 'docker-
provider' | awk '{print \$1}'"
$ vagrant ssh $(provider_id)
$ docker ps --format "{{.Names}}" | xargs docker stats

前面两行稍微复杂的代码允许通过ssh登录到docker provider VM中。如果使用的不是虚拟机,而是运行在docker驱动的Linux机器上,那么只需要最后一行。

第2个终端同样用于诊断,一般按照如下命令使用它运行scrapy monitor。

$ vagrant ssh
$ cd book/ch11/properties
$ scrapy monitor scrapyd*

请记住使用scrapyd*以及以服务器名称命名的空文件,scrapy monitor scrapyd*将被扩展为scrapy monitor scrapyd1 scrapyd2 scrapyd3。

第3个终端是我们的开发机,我们在这里启动爬虫。除此之外,大部分时间是空闲的。如果想要启动一个新的爬虫,可以执行如下命令。

$ vagrant ssh
$ cd book/ch11/properties
$ for i in scrapyd*; do scrapyd-deploy $i; done
$ scrapy crawl distr

最后两行是最基本的。首先,我们使用for循环及scrapyd-deploy部署爬虫到服务器中。然后,使用scrapy crawl distr启动爬取操作。我们也可以运行更少的爬取操作,比如scrapy crawl distr -s CLOSESPIDER_PAGECOUNT=100,以爬取大约100个索引页,相当于大概3000个详情页。

最后的第4个终端用于连接Spark服务器,我们将使用它运行数据流分析任务。

$ vagrant ssh spark
$ pwd
/root
$ ls
book items
$ spark-submit book/ch11/boostwords.py items

只有最后一行是最基本的,在该行中运行了boostwords.py,并将我们本地的items目录提供给监控。有时,我还会使用watch ls -l items来关注Item文件的到达情况。

究竟哪些关键词对价格影响最大呢?我把它作为惊喜,留给那些一直跟随下来的读者们。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文