- 1. WebMagic 概览
- 1.1 设计思想
- 1.2 总体架构
- 1.3 项目组成
- 2. 快速开始
- 2.1 使用Maven
- 2.2 不使用Maven
- 2.3 第一个爬虫项目
- 3. 下载和编译源码
- 3.1 下载源码
- 3.2 导入项目
- 3.3 编译和执行源码
- 4. 编写基本的爬虫
- 4.1 实现 PageProcessor
- 4.2 使用 Selectable 抽取元素
- 4.3 使用Pipeline保存结果
- 4.4 爬虫的配置、启动和终止
- 4.5 Jsoup与Xsoup
- 4.6 爬虫的监控
- 4.7 配置代理
- 4.8 处理非 HTTP GET 请求
- 5. 使用注解编写爬虫
- 5.1 编写Model类
- 5.2 TargetUrl与HelpUrl
- 5.3 使用ExtractBy进行抽取
- 5.4 在类上使用ExtractBy
- 5.5 结果的类型转换
- 5.6 一个完整的流程
- 5.7 AfterExtractor
- 6. 组件的使用和定制
- 6.1 使用和定制 Pipeline
- 6.2 使用和定制 Scheduler
- 6.3 使用和定制 Downloader
- 附录:实例分析
- 列表 + 详情的基本页面组合
- 抓取前端渲染的页面
4.6 爬虫的监控
爬虫的监控是 0.5.0 新增的功能。利用这个功能,你可以查看爬虫的执行情况——已经下载了多少页面、还有多少页面、启动了多少线程等信息。该功能通过 JMX 实现,你可以使用 Jconsole 等 JMX 工具查看本地或者远程的爬虫信息。
如果你完全不会 JMX 也没关系,因为它的使用相对简单,本章会比较详细的讲解使用方法。如果要弄明白其中原理,你可能需要一些 JMX 的知识,推荐阅读: JMX 整理 。我很多部分也对这篇文章进行了参考。
注意: 如果你自己定义了 Scheduler,那么需要用这个类实现 MonitorableScheduler
接口,才能查看“LeftPageCount”和“TotalPageCount”这两条信息。
4.6.1 为项目添加监控
添加监控非常简单,获取一个 SpiderMonitor
的单例 SpiderMonitor.instance()
,并将你想要监控的 Spider 注册进去即可。你可以注册多个 Spider 到 SpiderMonitor
中。
public class MonitorExample {
public static void main(String[] args) throws Exception {
Spider oschinaSpider = Spider.create(new OschinaBlogPageProcessor())
.addUrl("http://my.oschina.net/flashsword/blog");
Spider githubSpider = Spider.create(new GithubRepoPageProcessor())
.addUrl("https://github.com/code4craft");
SpiderMonitor.instance().register(oschinaSpider);
SpiderMonitor.instance().register(githubSpider);
oschinaSpider.start();
githubSpider.start();
}
}
4.6.2 查看监控信息
WebMagic 的监控使用 JMX 提供控制,你可以使用任何支持 JMX 的客户端来进行连接。我们这里以 JDK 自带的 JConsole 为例。我们首先启动 WebMagic 的一个 Spider,并添加监控代码。然后我们通过 JConsole 来进行查看。
我们按照 4.6.1 的例子启动程序,然后在命令行输入 jconsole(windows 下是在 DOS 下输入 jconsole.exe)即可启动 JConsole。
这里我们选择启动 WebMagic 的本地进程,连接后选择 MBean,点开 WebMagic,就能看到所有已经监控的 Spider 信息了!
这里我们也可以选择“操作”,在操作里可以选择启动-start() 和终止爬虫-stop(),这会直接调用对应 Spider 的 start() 和 stop() 方法,来达到基本控制的目的。
4.6.3 扩展监控接口
除了已有的一些监控信息,如果你有更多的信息需要监控,也可以通过扩展的方式来解决。你可以通过继承 SpiderStatusMXBean
来实现扩展,具体例子可以看这里: 定制扩展 demo 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论