【Java】爬虫,看完还爬不下来打我电话

前言

防砸声明:此文仅仅能保证入门,不保证商业生产。

最终实现效果:
最终实现效果

爬虫简介:

引用钱洋博士课程的部分内容(有删改):

网络爬虫技术,有效的获取网络数据资源的重要方式。简单的理解,比如您对百度贴吧的一个帖子内容特别感兴趣,而帖子的回复却有1000多页,这时采用逐条复制的方法便不可行。而采用网络爬虫便可以很轻松地采集到该帖子下的所有内容。

网络爬虫的作用,我总结为以下几点:

  • 舆情分析:企业或政府利用爬取的数据,采用数据挖掘的相关方法,发掘用户讨论的内容、实行事件监测、舆情引导等。
  • 企业的用户分析:企业利用网络爬虫,采集用户对其企业或商品的看法、观点以及态度,进而分析用户的需求、自身产品的优劣势、顾客抱怨等。
  • 科研工作者的必备技术:现有很多研究都以网络大数据为基础,而采集网络大数据的必备技术便是网络爬虫。利用网络爬虫技术采集的数据可用于研究产品个性化推荐、文本挖掘、用户行为模式挖掘等。

按照陈树义前辈在《聊聊整体性学习方法》一文中提到的思想,本文思路如下:

  1. 获取:目前都有哪些爬虫技术?
  2. 理解:这些爬虫技术的特色是什么?
  3. 扩展:快速上手一下cdp4j爬虫技术。
  4. 纠错:解析网页过程中踩过的坑与填坑之路。
  5. 应用:实战爬取网易新闻评论内容。

正文

一、目前都有哪些爬虫技术,及其特色都是什么?

​ 先说一句我不是专业搞爬虫的,从2019-07-06到2019-07-11累计学习6天。这篇文章是对我这6天学习的总结。以我浅显的了解,在此我列出我曾经尝试过后来又放弃了的框架,最后压轴(zhoù)再写我正在使用的框架。目前有以下流行的爬虫框架技术:

  1. Apache Nutch(高大上)

    Nutch这个框架运行需要Hadoop,Hadoop需要开集群,对于想要快速入门爬虫的我是望而却步了…

    一些资源地址列在这里,说不定以后会学习呢。

    Apache顶级项目列表

    Nutch官网

    Nutch官方教程


  1. Crawler4j(感觉很强)

    从它的包名上可以看出这个框架来自加州大学欧文分校。我下载下来Demo运行了一下,感觉很强!但他的官方文档介绍很简洁,Demo只是运行了一下没看懂怎么用。之所以感觉很强,是看见了好的厉害的API,当然也有一些加州大学的名气影响。

    Crawler4j官方GitHub


  1. WebMagic(国产)

    根据网上介绍,这个框架产自曾就职于大众点评的黄亿华大佬,但是,无论GitHub还是码云上这个仓库已经两年没有更新了,其中有一个致命的“Bug”,不能爬https的链接。作者在GitHub的issue中明确说明会在下一个版本(0.7.4)中修复此“Bug”,但是,两年过去了,依然没有发布下一个版本,截止2019年7月11号,GitHub上依然是0.7.3版本,可能作者遇到了某种不可抗拒力量,导致无法维护下去。下图来自GitHub issues

issue

WebMagic官网

GitHub地址

码云


  1. Spiderman2(国产)

    这个听名字就挺霸气的,和蜘蛛侠电影齐名。我也是下载下来Demo运行了一下,但是运行啥啥报错…

    而且官方库也没有提供文档。

    但是,之所以列出来这个库,是因为作者在码云的issue中现场教学感动了我。

现场教学

Spiderman2码云地址


  1. WebController(国产·合肥工业大学)

    当我根据这个库的包名搜索出合肥工业大学时,心中只有两个字:牛X!

    维护这个库的兄弟还煞费苦心的把README.md全英文书写。不过同样是因为文档过于简陋。Demo运行了几个,不知道运行出来个啥。

    之所以贴出来这个,确实是因为他在GitHub上2000+star震惊到我了,同样身为大学生的我,求学三年,毫无产出,甚是惭愧。定当以前辈励志,再加努力。

    WebController官方GitHub


  1. HtmlUnit(经典)

    这个框架堪称经典,也是我们暑期实训老师讲解的框架。有近乎完整的文档介绍。

    但是,HtmlUnit使用起来相当麻烦,或许用多了就不觉得麻烦了。还有一点忍受不了,就是太慢了,慢到令人发指的地步!再尝试了几个Demo之后,我就放弃了。

    HtmlUnit官网


  1. Jsoup(经典·适合静态网友)

    这个框架堪称经典,也是我们暑期实训老师讲解的框架。有近乎完整的文档介绍。

    但是Jsoup只能get到静态网页内容。但是,当今世界,静态网页已经寥寥可数了,大都是与后台交互的动态网页,很多数据都是经过后台获取,渲染之后才能呈现在网页上。据我6天浅显的学习,发现单纯的Jsoup无法爬取动态网页内容。
    大家可以试一下,打开一篇网易新闻,然后右键查看源代码,你会发现,你所看到的页面和源代码内容并不是一一对应的。

    不过,这个框架有个有个优点,具有很强大的解析网页的功能。

    Jsoup中文教程


  1. selenium(Google多名大佬参与开发)

    感觉很厉害,实际真的很厉害,看官网以及其他人的介绍,说是真正模拟浏览器。GitHub1.4w+star,你没看错,上万了。但是我硬是没配好环境。入门Demo就是没法运行成功,所以就放弃了。

    selenium 官方GitHub


  1. cdp4j(今天的主角)

    使用前提:

    安装Chrome浏览器,即可。

    简单介绍:

    HtmlUnit的优点在于,可以方便的爬取静态网友;缺点在于,只能爬取静态网页。

    selenium的优点在于,可以爬取渲染后的网页;缺点在于,需要配环境变量等等。

    将二者整合,取长补短,就有了cdp4j。

    之所以选用它,是因为真的方便好用,而且官方文档详细,Demo程序基本都能跑起来,类名起的见名知意。想当年学软件工程的时候,一直在纳闷,为什么要写文档啊,我程序能实现功能不就得了?现如今,看着如此详实的文档,留下了激动而又悔恨的泪水…

    cdp4j有很多功能:

    a. 获得渲染后的网页源码

    b. 模拟浏览器点击事件

    c. 下载网页上可以下载的文件

    d. 对网页进行截屏或转PDF打印

    e. 拿到网页响应内容

    f. 等等

    更多详细信息可以自行去如下三个地址中探索发现:

    [cdp4j官网地址]

    [Github仓库]

    [Demo列表]

小结

我在正文列出了9个爬虫框架。有强如Apache、Google大佬开发维护,也有诸如我国合肥工业大学学生的作品。其实各有各自的特色,弱水三千,我想全喝,但没有那个能力。所以目前只饮一瓢,就是cdp4j了。

二、快速上手一下cdp4j爬虫技术

首先,再强调一点:使用前提是安装了Chrome浏览器

当然,不能凭空使用,还需要Maven依赖

<dependency>
    <groupId>io.webfolder</groupId>
    <artifactId>cdp4j
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值