一、背景介绍
本文是基于Webmagic提供的爬虫技术爬取的文章,虽然该技术已不再更新,但是现有的功能不影响正常使用,这点还是非常棒的,使用方面的问题直接看官方文档就行了,我这里只介绍个人爬取csdn的文章介绍。
官网中文文档地址是:http://webmagic.io/docs/zh/,
github地址是: https://github.com/code4craft/webmagic。
适合对象:java开发人员或者已经在本地安装了java环境而又不想再安装python环境的人(本人没错了)
二、爬取优快云文章
(一)获取文章列表
我们这次主要是爬取csdn首页推荐模块的文章来练练手。
推荐模块的文章一看就是懒加载,一次性只会提供20篇文章,然后继续下拉才会进行新的请求获取新的文章。所以我们得找到获取文章的链接,通过f12打开控制台,当我们不停的获取推荐模块的文章时控制台network有个select_content一直在请求,因此就看下这个请求的返回值是不是我们想要的。
点进去select_content请求看到response有返回值,然后把返回值通过json.cn格式化以后发现返回的正是新的文章。因此这个接口正是我们需要的获取文章的接口,后面爬虫的入口就是这个链接。
(二)文章具体分析
针对返回值中的随意一个url进行访问,然后针对访问后的页面进行分析,获取具体的html。
例如对https://blog.youkuaiyun.com/shangyanaf/article/details/120186973这个url进行访问分析。
我们访问到文章以后如果想保存文章的名称、文章发布时间,文章内容,那么我们就打开f12控制台,看下html具体如何获取。
上图可以看到,文章的名称是class为title-article的h1的值,也能用h1的id:articleContentId来获取h1的值,后面我们的代码就是用h1的id来获取的值。
上图可以看到,文章的发布时间是class为bar-content的div下class为time的span的值。
上图可以看到,文章的内容是class为baidu_pl的div下article的值。
(三)具体代码
package com.cloud.applets.controller.crawler.my;
import org.apache.commons.collections.CollectionUtils;
import us.codecraft.webmagic.Page;
import