web-magic + Xpath Java程序员

大学毕业一年收获仍是满满的!手动滑稽html

今天呢,来记录一个爬虫项目,用的web-magic实现,不说Java和Python那个更强,只看那个代价更小,与如今我而言天然是Java喽!同时呢magic也是参考了Scrapy框架的。java

先把git地址掏出来:https://gitee.com/xxxx/magicFetch.git(留言给地址)git

言归正传,先说爬虫须要什么:github

  一、明确要作的事情:爬虫,爬哪一个网站。web

  二、从哪里开始:爬虫的入口(启停配)Spider多线程

  三、接下来即是如何进行爬取和爬取结果的处理。框架

详细:ide

  如何启动,如何配置,如何中止: 函数

 

 Spider.create(new Getxgluo())
        .thread(10) //线程,magic是支持多线程的
        .addUrl(t)  //t:要爬取的网站URL
        .addPipeline(new MyPipeline())  //添加一个对爬取结果的处理操做类--输出到console
        .addPipeline(new MyFilePipeline())  //再添加一个对爬取结果的处理操做类--输出到文件
        .run();  //爬虫诞生,去吧皮卡丘,把我想要的拿回来.  

  靓仔,你没猜错,create方法是静态的,因此能够用类名直接调用,run方法就是入口,该方法执行的时候爬虫就启动了。网站

  这些是Spider最经常使用的配置了,至于骚操做做者就……,你们能够问问度娘,或者直接从 https://github.com/code4craft/webmagic.git获取项目,直接分析代码(若是觉着做者陋,欢迎吐槽)。

  启动了,基本配置有了,咱们该设计本身的逻辑了,这个时候咱们就要找本身想要爬取的内容在网页的什么位置。

  找到网页查看源代码找到须要爬取的内容的标签如:

    

 

  这里咱们有id属性,那么咱们知道在一个网页中的id属性是惟一的,所以咱们能够借助这个属性,进行匹配

 

  String xpathFB = "[@id=content_left]/div[2]/h3/text()";

   咱们利用html提供的xpath即可以根据上面提供的网页中的位置,找到h3标签中的内容。

  如今位置找到了,要开始抓数据了,咱们上面说到Spider.run的时候爬虫已经放出去了,刚刚咱们有指定了爬虫的目标,如今要开始采蜜了。

  请你回头看看我,Spider.create(new Getxgluo())这里咱们建立了一个对象做为参数,但这个类但是做者本身写的(固然你也能够),可是这个类但是须要实现PageProcess借口的,并且要重写process方法,而这个方法就是咱们采蜜动做的设计。

  在这里咱们须要对爬的网址进行正则匹配,否则地址都错了,那还玩个球啊。地址正确就用到网页中的位置xpathFB了。

 

  html.xpath(xpathFB).toString();

 

  经过Xpath咱们就能获取到了h3中的内容存到字符串中了,那岂不是能够随心所欲了。

  哈哈,只剩一步了,对获取内容的保存或者输出。

 

  这个时候拿出最后一把宝剑:Pipeline 来进行后续的操做,好比用于输出到console中的consoPipeline类和FilePipeline类,固然咱们也能够本身重写Pipeline来建立本身的逻辑。

  若是咱们用了Pipeline及其子类,咱们还须要new吗?记住不须要,不须要,不须要,这里用的回调函数,你须要在实现Pipeline的时候重写process方法,你写的逻辑就能被自动调用(真香)。

  好了,如今咱们三个步骤都完成了。愉快的试一下吧

相关文章
相关标签/搜索