php可以抓取网页数据吗(java抓取网站数据假设你需要获取51人才网上java人才的需求数量(组图))
优采云 发布时间: 2021-12-19 23:21php可以抓取网页数据吗(java抓取网站数据假设你需要获取51人才网上java人才的需求数量(组图))
文件介绍:
java捕获网站数据
假设你需要在线获取51job人才在线java人才需求量,首先你需要分析51job网站搜索这个
一件如何运作?通过对网页源代码的分析,我们发现了以下信息:
1. 页面搜索时请求的网址为
2. 请求使用的方法是:POST
3. 返回页面的编码格式为:GBK
4. 假设我们在搜索java人才时想要获取结果页面显示的需求数量,发现数量在返回的
在 HTML 数据中的这样一段代码中:
1-30 / 14794
, 所以我们可以得到这样一个
mode:".+1-\d+ / (\d+).+",第一组的内容就是我们最终需要的数据,关于java中的mode,
请参考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=%E9%80%89%E6%8B%A9%2F%E4%BF%AE%E6%94%B9&funtype=0000&btnInd
ustrytype=%E9%80%89%E6%8B%A9%2F%E4%BF%AE%E6%94%B9&industrytype=00
关于第5条的数据,我们不关心服务器真正需要什么,把它们都发送出去。有了这些标准
准备好了,我们其实就可以开始通过java发送请求,得到最终的数据了。
我们定义了Resource类,这个类封装了与请求相关的所有信息,Resource包括以下属性:
查看普通副本到剪贴板打印?
/**
* 需要获取资源的目标地址,不收录查询字符串
*/
私有字符串目标;
/**
* get请求的查询字符串,或者post请求的请求数据
*/
私人字符串查询数据 = "";
/**
* 请求方法,获取/发布
*/
私有字符串方法 = "GET";
/**
* 返回数据的编码类型
*/
私人字符串字符集 = "GBK";
/**
* 捕获数据的模式,根据模式分组返回数据列表
*/
私有字符串模式;
/**
* 需要获取资源的目标地址,不收录查询字符串
*/
私有字符串目标;
/**
* get请求的查询字符串,或者post请求的请求数据
*/
私人字符串查询数据 = "";
/**
* 请求方法,获取/发布
*/
私有字符串方法 = "GET";
/**
* 返回数据的编码类型
*/
私人字符串字符集 = "GBK";
/**
* 捕获数据的模式,根据模式分组返回数据列表
*/
私有字符串模式;
以下是抓取内容的代码:
查看普通副本到剪贴板打印?
//假设下面代码中的res对象封装了所有的请求信息。
//URL指向目的地。
//res.getTarget 返回目标地址,当是get请求时,这个地址收录查询字符串的信息
URL url = 新 URL(res.getTarget());
HttpURLConnection con = (HttpURLConnection) url.openConnection(); //建立到目的地的连接
con.setRequestMethod(res.getMethod()); //设置请求的方法