支持分布式部署的Java爬虫框架_2

2018-05-09
  • 945
  • 0

上次已经讲到Seimicrawler的返回数据提取,那么我们今天就讲讲里面回调函数的应用。仅仅只有一个回调函数有点不能满足你的需求的,如果你还想使用startUrl页面中的其它URL进行请求获取数据的话,你就需要自定义回调函数了。接下来是自定义的注意事项:

1、作为回调函数,必须满足public void name(Response response){},就是方法是公有的,无返回值,并且只能有一个参数Response。

2、通过new Request或者Request.Bulid来创建实体

3、在回调函数里的产生的Request,是可以指定其他回调函数的,当然也可以指定自己为回调函数。

4、requset里面设置的一个回调函数,只需提供它的string类型的名称就可以了

5、继承BaseSeimiCrawler的爬虫,可以在直接在函数里面调用父类的push将新的抓取请求发送到请求的队列里面

另外seimi默认的UA(useragent)为seimicrawler/jsoupxpath,要是你不想用这个,感觉不方便的话,你可以自定义一个。需要覆盖BaseSeimiCrawler里面的getUserAgent方法,这样的话你想伪装一个UA,可以自己实现一个UA库,每次都使用不同的。

为了可以支持SeimiAgent你首先必须的知道SeimiAgent的服务地址。在需要crawler中重写的两个方法来提供服务信息:

1、seiAgentHost();返回值为string。指定服务器如:10.15.12.212

2、seimiAgentPort();返回值为int。指定监听的端口

有了爬虫,接下来就可以启动你的爬虫进行数据抓取了。启动爬虫系统,首先你得有提个main函数,当然最好是一个独立的启动类。在main函数中,初始化Seimi这个对象。具体参考:

public class BootCk {

    public static void main(String[] args){

        Seimi sei = new Seimi();

        sei.start("basic");

    }

}