java从网页抓取数据(抓取你想要的网页数据假设你需要获取51人才的需求数量(组图))
优采云 发布时间: 2021-12-16 23:35java从网页抓取数据(抓取你想要的网页数据假设你需要获取51人才的需求数量(组图))
抓取你想要的网页数据
java捕获网站数据
假设你需要在线获取51job人才在线java人才需求量,首先你需要分析51job网站搜索这个
一件如何运作?通过对网页源代码的分析,我们发现了以下信息:
1. 页面搜索时请求的网址为
2. 请求使用的方法是:POST
3. 返回页面的编码格式为:GBK
4. 假设我们在搜索java人才时想要获取结果页面显示的需求数量,我们发现该数量在返回的HTML数据中的一段代码中:
1-30 / 14794
,所以我们可以得到这样一个模式:“.+1-\d+/(\d+).+”,第一组的内容就是我们最终需要的数据,java中的模式请参考java文档Pattern类介绍
5. 另外,作为一个POST请求,页面发送到服务端的数据如下(这样很容易像prototype一样通过js
帧抓取,参考我的另一篇博文介绍):
lang=c&stype=1&postchannel=0000&fromType=1&line=&keywordtype=2&keyword=java&btnJ obarea=%E9%80%89%E6%8B%A9%E5%9C%B0%E5%8C%BA&jobarea=0000&image=&btn% Funtype 80%89%E6%8B%A9%2F%E4%BF%AE%E6%94%B9&funtype=0000&btnIndustrytype=%E9%80%89%E6%8B%A9%2F%E4%BF%AE%E6% 94%B9&industrytype=00 关于第5条中服务器真正需要的数据,我们不关心,全部发送。有了这些标准
准备好了,我们其实就可以开始通过java发送请求,得到最终的数据了。
我们定义了Resource类,这个类封装了与请求相关的所有信息,Resource包括以下属性:view plaincopy to clipboardprint?
/**
* 需要获取资源的目标地址,不收录查询字符串
*/
私有字符串目标;
/**
* get请求的查询字符串,或者post请求的请求数据
*/
私人字符串查询数据 = "";
/**
* 请求方法,获取/发布
*/
私有字符串方法 = "GET";
/**
* 返回数据的编码类型
*/
私人字符串字符集 = "GBK";
/**
* 抓取数据的模式,会根据模式的分组返回数据列表
*/
私有字符串模式;