网站首页 > 开源技术 正文
1 爬虫的监控
爬虫的监控是0.5.0新增的功能。利用这个功能,你可以查看爬虫的执行情况——已经下载了多少页面、还有多少页面、启动了多少线程等信息。该功能通过JMX实现,你可以使用Jconsole等JMX工具查看本地或者远程的爬虫信息。
如果你完全不会JMX也没关系,因为它的使用相对简单,本章会比较详细的讲解使用方法。如果要弄明白其中原理,你可能需要一些JMX的知识,推荐阅读:JMX整理。我很多部分也对这篇文章进行了参考。
注意: 如果你自己定义了Scheduler,那么需要用这个类实现MonitorableScheduler接口,才能查看“LeftPageCount”和“TotalPageCount”这两条信息。
1.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(); } } |
1.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()方法,来达到基本控制的目的。
1.3 扩展监控接口
除了已有的一些监控信息,如果你有更多的信息需要监控,也可以通过扩展的方式来解决。你可以通过继承SpiderStatusMXBean来实现扩展。
2 配置代理
从0.7.1版本开始,WebMagic开始使用了新的代理APIProxyProvider。因为相对于Site的“配置”,ProxyProvider定位更多是一个“组件”,所以代理不再从Site设置,而是由HttpClientDownloader设置。
API | 说明 |
HttpClientDownloader.setProxyProvider(ProxyProvider proxyProvider) | 设置代理 |
ProxyProvider有一个默认实现:SimpleProxyProvider。它是一个基于简单Round-Robin的、没有失败检查的ProxyProvider。可以配置任意个候选代理,每次会按顺序挑选一个代理使用。它适合用在自己搭建的比较稳定的代理的场景。
代理示例:
设置单一的普通HTTP代理为101.101.101.101的8888端口,并设置密码为"username","password"
HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); httpClientDownloader.setProxyProvider(SimpleProxyProvider.from(new Proxy("101.101.101.101",8888,"username","password"))); spider.setDownloader(httpClientDownloader); |
设置代理池,其中包括101.101.101.101和102.102.102.102两个IP,没有密码
HttpClientDownloader httpClientDownloader = new HttpClientDownloader(); httpClientDownloader.setProxyProvider(SimpleProxyProvider.from( new Proxy("101.101.101.101",8888) ,new Proxy("102.102.102.102",8888))); |
- 上一篇: 爬虫神器,webmagic网页内容如何解析?
- 下一篇: 我所理解的爬虫(对于爬虫的理解)
猜你喜欢
- 2024-09-28 Android 开发者应该知道的 Kotlin 技巧 | Gitee 项目推荐
- 2024-09-28 java技术栈-服务四层技术(java技术架构图)
- 2024-09-22 程序员高效率实用工具推荐(web开发+爬虫+数据库+……)
- 2024-09-22 web开发之-PHP面向对象(9)(php面向对象和面向过程)
- 2024-09-22 大数据开源舆情分析系统-数据采集技术架构浅析
- 2024-09-22 除了Android开发Kotlin 还能做什么?六款优质Kotlin项目分享
- 2024-09-22 我所理解的爬虫(对于爬虫的理解)
- 2024-09-22 爬虫神器,webmagic网页内容如何解析?
- 2024-09-22 爬虫神器,Webmagic快速上手如此简单
- 2024-09-22 爬虫神器,WebMagic组件的使用和定制
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)