web-magic + Xpath Java程序员

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

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

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

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

  1、明确要做的事情:爬虫,爬哪个网站。

  2、从哪里开始:爬虫的入口(启停配)Spider

  3、接下来便是如何进行爬取和爬取结果的处理。

详细:

  如何启动,如何配置,如何停止: 

 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方法,你写的逻辑就能被自动调用(真香)。

  好了,现在我们三个步骤都完成了。愉快的试一下吧

(0)

相关推荐

  • 列举几个简单的例子来更好的理解scrapy工作的原理

    说明:了解爬虫的可能都会知道,在爬虫里,requests入门简单,即使是没有基础的小白,学个几天也能简单的去请求网站,但是scrapy就相对来说就比较难,本片文章能是列举几个简单的例子去理解的scra ...

  • 【视频讲解】Scrapy递归抓取简书用户信息

    好久没有录制实战教程视频,大邓就在圣诞节后直接上干货. 之前写过一期[视频教程-用python批量抓取简书用户信息]的文章,是自己造的轮子,今天我趁着刚入门scrapy和xpath,操刀重写这个任务. ...

  • 关于爬虫平台的架构设计实现和框架的选型(一)

    关于爬虫平台的架构设计实现和框架的选型(一) 关于爬虫平台的架构设计实现和框架的选型(二)--scrapy的内部实现以及实时爬虫的实现 首先来看一下一个爬虫平台的设计,作为一个爬虫平台,需要支撑多种不 ...

  • 易车网实战 【保姆级】:Feapder爬虫框架入门教程

    大家好,我是辰哥! 今天辰哥带大家来看看一个爬虫框架:Feapder,看完本文之后,别再说你不会Feapder了.本文辰哥将带你了解什么是Feapder?.如何去创建一个Feapder入门项目(实战: ...

  • 成为一名优秀的Java程序员9+难以置信的公式

    成为一名优秀的Java程序员 成为一名优秀的Java程序员并不重要,但是首先您应该了解基本的编程语言. 好吧,你知道那太好了.我们应该一步一步地精通Java编程,并应遵循所有说明,改进Java的编程逻 ...

  • 帮公司面试月薪1万6的java程序员,问得都很基础啊

    B站就是下面账号 视频可能更有感觉哦 面试的答案在本文章 建议大家先看视频,然后看自己能否回答上 回答不上的回头看看本文章效果更好哦 面试的日子里有程序汪的面试视频和文章,面试不慌了(这广告打的) 这 ...

  • 想成为一名优秀的Java程序员学历真的重要嘛?

    作为编程语言界的常青藤Java,无论是在企业级应用,还是后端开发中,均有着无可替代的地位.而对于Java开发者是否需要学历文凭也是一直以来都十分热议的话题,今天小编就带着大家来侃一侃这个问题. 首先回 ...

  • Java程序员简历应该怎么写,需要注意些什么?

    前言 不论是校招还是社招都避免不了各种面试.笔试,如何去准备这些东西就显得格外重要.不论是笔试还是面试都是有章可循的,我这个"有章可循"说的意思只是说应对技术面试是可以提前准备.  ...

  • 马士兵JAVA高级互联网架构师|JAVA程序员涨薪必备【马士兵教育】

    5年大数据.人工智能开发经验,曾经任职于HPE.国家生物研究院等多家企业,负责过HPE国内基地海量数据的共享与存储平台.医疗大数据存储解决方案.基于基因信息诊断模型(借助TensorFlow.Kera ...

  • 成为更好的Java程序员的9条技巧

    成为更好的Java程序员的9条技巧 架构即人生2021-01-23 22:56:49 https://medium.com/javarevisited/9-tips-to-become-a-bette ...

  • 如何衡量一个Java程序员技术水平?

    Java后端开发大致分为三个层次:初级开发.高级开发和架构构建.针对不同的阶段掌握技术能力有所不同,那具体要掌握哪些技术呢? 初级程序员: 初级工程师主要是指刚毕业的,职场上的技术新人.通常这类人会有 ...

  • 2021年Java程序员学习路线图大纲

    第一阶段 Java基础: 面向对象 面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式. 集合 即集合是&quo ...

  • 知乎热评:你做 Java 程序员真的是因为热爱吗?

    知乎热评话题:你做程序员真的是因为热爱吗?问题详细描述是这样的: java开发程序猿,最近有些迷茫.毕业快一年了,实习+工作在现在的公司近两年.没有当初刚开始工作时那么热情了,想要去提升但是静不下心去 ...