• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

Webmagic 爬虫监控和配置代理

JAVA web前端中文站 4年前 (2017-04-25) 2755次浏览 已收录 0个评论
文章目录[隐藏]

现在的服务基本上都离不开监控。Webmagic 爬虫框架自带了监控功能,本文将带领大家使用?Webmagic 爬虫的监控功能。

Webmagic 爬虫的监控是 0.5.0 新增的功能。利用这个功能,可以查看爬虫的执行情况——已经下载了多少页面、还有多少页面、启动了多少线程等信息。该功能通过 JMX 实现,你可以使用 Jconsole 等 JMX 工具查看本地或者远程的爬虫信息。

注意: 如果你自己定义了 Scheduler,那么需要用这个类实现 MonitorableScheduler 接口,才能查看“LeftPageCount”和“TotalPageCount”这两条信息。

为爬虫项目添加监控

添加监控非常简单,获取一个 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();     } }

查看监控信息

WebMagic 的监控使用 JMX 提供控制,你可以使用任何支持 JMX 的客户端来进行连接。我们这里以 JDK 自带的 JConsole 为例。我们首先启动 WebMagic 的一个 Spider,并添加监控代码。然后我们通过 JConsole 来进行查看。

启动程序,然后在命令行输入 jconsole(windows 下是在 DOS 下输入 jconsole.exe)即可启动 JConsole。

Webmagic 爬虫监控和配置代理

这里我们选择启动 WebMagic 的本地进程,连接后选择“MBean”,点开“WebMagic”,就能看到所有已经监控的 Spider 信息了!

这里我们也可以选择“操作”,在操作里可以选择启动-start()和终止爬虫-stop(),这会直接调用对应 Spider 的 start()和 stop()方法,来达到基本控制的目的。

Webmagic 爬虫监控和配置代理

扩展监控接口

除了已有的一些监控信息,如果你有更多的信息需要监控,也可以通过扩展的方式来解决。你可以通过继承 SpiderStatusMXBean 来实现扩展,具体例子可以看这里: 定制扩展 demo。

WebMagic 配置代理

从 0.4.0 版本开始,WebMagic 开始支持 Http 代理。因为场景的多样性,代理这部分 API 一直处于不稳定状态,但是因为需求确实存在,所以 WebMagic 会继续支持代理部分的完善。目前发布的 API 只是 beta 版,后续 API 可能会有更改。代理相关的设置都在 Site 类中。

API 说明
Site.setHttpProxy(HttpHost httpProxy) 设置单一的普通 HTTP 代理
Site.setUsernamePasswordCredentials(UsernamePasswordCredentials usernamePasswordCredentials) 为 HttpProxy 设置账号密码
Site.setHttpProxyPool(List/?httpProxyList, boolean isUseLastProxy) 设置代理池

设置单一的普通 HTTP 代理为 101.101.101.101 的 8888 端口,并设置密码为”username”,”password”

 site.setHttpProxy(new HttpHost("101.101.101.101",8888))     .setUsernamePasswordCredentials(new UsernamePasswordCredentials("username","password"))

设置代理池,其中包括 101.101.101.101 和 102.102.102.102 两个 IP

 List<String[]> poolHosts = new ArrayList<String[]>(); poolHosts.add(new String[]{"username","password","101.101.101.101","8888"}); poolHosts.add(new String[]{"username","password","102.102.102.102","8888"}); //httpProxyList 输入是 IP+PORT, isUseLastProxy 是指重启时是否使用上一次的代理配置 site.setHttpProxyPool(poolHosts,false);

0.6.0 版本后,允许实现自己的代理池,通过扩展接口 ProxyPool 来实现。目前 WebMagic 的代理池逻辑是:轮流使用代理池中的 IP,如果某个 IP 失败超过 20 次则增加 2 小时的重用时间,具体实现可以参考 SimpleProxyPool。


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Webmagic 爬虫监控和配置代理
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址