【图片抓取】002-简单一览

[toc]

项目目的

通过示例项目,初步接触spring boot,maven等常用工具,熟悉常用JAVA环境;使用通过httpclient获取美食杰html数据,使用jsoup来解析html数据并抓取处理目标数据。

流程图示意

截图

  1. 读取配置,本章节示例中暂不读取配置;
  2. 使用httpclient读取html页面内容,使用jsoup解析页面内容;
  3. 处理步骤2中的内容,本章节中直接保存为文件;
  4. 判断是否继续解析,真实应用中大部分不会一次只读取一个url,本次示例只解析一次。

类图示意

截图

  • Application main方法启动,主逻辑实现。
  • IProcesser 目标document处理接口。
  • DefaultProcesserImpl IProcesser实现类。
  • HttpUtils Http处理类。

主要步骤

截图
示例中会通过我们的代码获取上图中红色标记的图片并保存在本地;

  1. 寻找目标;用浏览器打开网址http://www.meishij.net/zuofa/ganzhematitiantang_1.html(建议使用chrome),然后打开浏览器的开发者工具快捷键F12截图在窗口中选中elements页面,然后通过元素选择器选中目标图片,html代码会自动跳到图片的html代码;
  2. 编写jQuery选择器;此时我们已经找到目标的html代码,现在开始找到代码能识别的规则来获取数据,jsoup支持jquery选择器规则,我们可以做唯一测试,

截图;在开发者工具console行里实验通过$(".cp_headerimg_w img")获取的元素长度为1,既通过.cp_headerimg_w img就可以直接获取我们的目标图片位置;

  1. 最总我们通过以下代码我们就可以完成处理;

截图
本次示例只是简单找到目标,保存目标。具体代码可参考示例代码git地址,现在其实还有很多可优化改进的地方,下次我们继续。

HttpClient

简单说来就是现在互联网上通信http协议应用比较广泛 别人都用,爱用不用,扩展性好;另外java原生包提供基本的http功能,但是不好用,所以产生了HttpClient工具包。
HttpClient支持标准Http1.0/1.1;支持get,post,put,delete,head等http方法;支持https;支持http代理等等;基本上你能想到的关于http的特性,它都支持。
在本示例中,简单使用httpclient来获取html页面字符串内容,后面示例会使用HttpClient的多线程,以及线程池功能。

jsoup

jsoup能够把html的文本内容解析成html Document,通过类似jQuery选择器的用法,能方便的找到想要html内容。示例中要识别出http地址中的图片地址。
TODO 配合美食节页面, 浏览器查找截图简单说明jQuery selector

其它

注意

如果刚开始使用maven基本都会遇到一些问题:

  • maven编译慢,其实都是第一次慢,因为要下很多依赖包,最好通过配置maven国内镜像,可参考001-JAVA 基础环境
  • 编译莫名奇妙失败,可以通过确认C:\Users\xxx\.m2\repository目录下,是否存在pom依赖,或者把对应的依赖删掉重新maven编译下,

例如截图依赖是groupid:org.jsoup,artifactid:jsoup,则对应的jar目录是截图,既C:\Users\[xxx]\.m2\repository\[groupid]\[artifactid]\[version],指删掉该依赖即可,不要全删掉repository,不然其它jar也要重新下。


blog_sl
2 声望1 粉丝

没办法。。不能算作文章通过。。暂时记录在这。。