【图片抓取】002-简单一览
[toc]
项目目的
通过示例项目,初步接触spring boot,maven等常用工具,熟悉常用JAVA环境;使用通过httpclient获取美食杰html数据,使用jsoup来解析html数据并抓取处理目标数据。
流程图示意
- 读取配置,本章节示例中暂不读取配置;
- 使用httpclient读取html页面内容,使用jsoup解析页面内容;
- 处理步骤2中的内容,本章节中直接保存为文件;
- 判断是否继续解析,真实应用中大部分不会一次只读取一个url,本次示例只解析一次。
类图示意
- Application main方法启动,主逻辑实现。
- IProcesser 目标document处理接口。
-
DefaultProcesserImpl
IProcesser
实现类。 - HttpUtils Http处理类。
主要步骤
示例中会通过我们的代码获取上图中红色标记的图片并保存在本地;
- 寻找目标;用浏览器打开网址
http://www.meishij.net/zuofa/ganzhematitiantang_1.html
(建议使用chrome),然后打开浏览器的开发者工具
快捷键F12
;在窗口中选中
elements
页面,然后通过元素选择器选中目标图片,html代码会自动跳到图片的html代码; - 编写jQuery选择器;此时我们已经找到目标的html代码,现在开始找到代码能识别的规则来获取数据,jsoup支持jquery选择器规则,我们可以做唯一测试,
;在开发者工具console行里实验通过
$("
.cp_headerimg_w img")
获取的元素长度为1,既通过.cp_headerimg_w img
就可以直接获取我们的目标图片位置;
- 最总我们通过以下代码我们就可以完成处理;
本次示例只是简单找到目标,保存目标。具体代码可参考示例代码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也要重新下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。