初学webMagic

作为一个只是初懂,java的一个新人来说,再刚开始了解爬虫的时候,什么http协议啊,什么httpclient啊,都是一些十分高大上的东西,为自己的理解简直是埋下了一个又一个的雷坑。

而我写这篇文章的目的便是希望可以加深一下自己的理解,希望各位大神多多指教吧!!  

什么叫做爬虫!

爬虫,也叫(扒虫),我的理解就是可以再万维网上爬行,并且可以读取数据的程序。就叫做爬虫。

两个方向,一个叫做爬行,一个叫做扒取。 只要实现了这两个部分,其他的迎刃而解。

爬虫的分类!

因为,webmagic是中国人所写的,而中文又有很强大的表达阐述的能力,所以不像其他框架一样,人人都有不一样的理解。

第一种,叫做批量型爬虫,简单说就是,我对爬取范围作出大量的限制,之后,直接一次性爬取,最大的特征就是受限,可能一点小小改动,就可能导致这个爬虫,爬取到的数据完全不一样了!

第二种叫做,增量型爬虫,简单说,就是可以想微生物繁殖一样无线增值,无线的进行繁殖,知道抓取完所有的数据(或者我放不下了),适用于大型的搜索引擎。

第三种叫做,垂直型爬虫,简单说就是一个细致化的增量型爬虫,我对我扒取的数据的内容进行了,限定,筛选。就叫做增量型爬虫。

而我学习的webmagic便是一个垂直型爬虫。

webmagic

webmagic一共有7个jar包,分别是两个核心,四个附属,一个正在开发的包。

他们分别是webmagic-core,webmagic-extension,webmagic-samples,webmagic-scripts,webmagic-selenium,webmagic-saxion,webmagic-avalon!,依次分别是核心,附属,跟开发的包!  至于说最后一个包有没有开发完,就不太清楚了!

一个完整的爬虫程序分为三部分,数据读取,数据管理,数据存放!

而webmagic便是做的数据读取的部分!

webmagic共有4大部分,分别是pageprocesser,pieline,Scheduler,Downloader,分别应对着处理,持久,管理,下载。四大部分。

第一个,是处理,也就是说,我们需要开始拿去数据的时候,我们在这个地方作出操作,这个是终点站!

第二个,是持久,一般情况下,我们需要拿去的都是大量的数据,而这些数据都是分布在不同的网页中的,所以我们是需要将这些个页面一个个爬取出来的,而爬取出来又不能说直接使用,只能说是一步步的,一点一点的用。 所以我们需要将他持久化!

第三个,叫做管理,因为爬取数据时,可能会一瞬间获取大量的需要扒取的网址,但是呢。却只能一点一点的来往出扒,所以这个管理的目的就是说,实现对网址的监管,看看哪部分爬取了,那部分没有爬取!

第四个,叫做下载,因为我们通常爬取的不可能只有一下文本啊,什么的。 还有可能是爬取一些文件,图片,所以这个部分就是说,辅助我们的爬虫,来完成一些下载的任务!

建立程序

webmagic可以再maven托管的情况下,进行建立程序,当然了也可以不托管的情况下,建立程序(只不过,我没有成功过!)。

下面是我写的maven托管情况下的托管状态的代码!


也就不做具体的描述了,具体里面怎么书写,那就是maven的事情了!

下面贴上,我的书写的第一份爬虫!


下面是对自己想要获取的东西加以限定!

package com.oracle.Hello;


import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;


public class Test implements PageProcessor{
//这个的意思就是编码,间隔时间,重试次数
    private static Site site=Site.me().setRetryTimes(1000).setSleepTime(1000);
public Site getSite() {
return site;
}
    /**
     * 这个里面就是对你想要爬取的页面里面的具体内容加以限制的地方
     */
public void process(Page page) {
      //根据标签查找自己想要的数据
      //爬取的是这个网页中的logo图片的地址
              String path=page.getHtml().xpath("//*[@class='main-content']/p").css("img", "src").get();
              System.out.println(path);
              
             
}
public static void main(String[] args) {
//这个里面填写你所想要爬取的页面
//而我爬取的就是webmagic的官网
Spider.create(new Test()).addUrl("http://webmagic.io/").thread(5).run();//Strat()也可以
}


}

下面就是我获得的值

/images/logo.jpeg
get page: http://webmagic.io/

下面是实际他自己的值

/images/logo.jpeg






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章