java 抓取网站数据

java 抓取网站数据

ID:6031840

大小:100.50 KB

页数:17页

时间:2017-12-31

java 抓取网站数据_第1页
java 抓取网站数据_第2页
java 抓取网站数据_第3页
java 抓取网站数据_第4页
java 抓取网站数据_第5页
资源描述:

《java 抓取网站数据》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、java抓取网站数据假设你需要获取51job人才网上java人才的需求数量,首先你需要分析51job网站的搜索这一块是怎么运作的,通过解析网页的源代码,我们发现了以下一些信息:1.搜索时页面请求的URL是http://search.51job.com/jobsearch/search_result.php2.请求所用的方法为:POST3.返回的页面的编码格式为:GBK4.假设我们想获取搜索java人才时结果页面中显示的需求数量,我们发现数量位于返回的HTML数据中这样的一段代码之中:1-30/147

2、94,于是我们可以得到这样的一个模式:".+1-d+/(d+).+",第一个分组的内容就是我们需要的最终数据,有关java中的模式,请参考java文档中Pattern类的介绍5.另外做为POST请求,页面向服务器发送的数据如下(这个很容易能过prototype这样的js框架抓取到,参考我的其它博客介绍):lang=c&stype=1&postchannel=0000&fromType=1&line=&keywordtype=2&keyword=java&btnJobarea=%E9%80%89

3、%E6%8B%A9%E5%9C%B0%E5%8C%BA&jobarea=0000&image=&btnFuntype=%E9%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发送请求,并获得最终数据了。我们

4、定义Resource类,这个类封装所有的与请求有关的信息,Resource包括以下属性:viewplaincopytoclipboardprint?/***需要获取资源的目标地址,不包含查询串*/privateStringtarget;/***get请求时的查询串,或post请求的请求数据*/privateStringqueryData="";/***请求方式,get/post*/privateStringmethod="GET";/***返回的数据的编码类型*/privateStringcharset="

5、GBK";/***抓取数据的模式,将根据模式的分组来返回数据列表*/privateStringpattern;/***需要获取资源的目标地址,不包含查询串*/privateStringtarget;/***get请求时的查询串,或post请求的请求数据*/privateStringqueryData="";/***请求方式,get/post*/privateStringmethod="GET";/***返回的数据的编码类型*/privateStringcharset="GBK";/***抓取数据的模式,将根

6、据模式的分组来返回数据列表*/privateStringpattern;以下为抓取内容的代码:viewplaincopytoclipboardprint?//假设以下代码中res对象封装了所有的请求信息。//URL指向目的地。//res.getTarget返回目标地址,且当为get请求时,这个地址包含了查询串的信息URLurl=newURL(res.getTarget());HttpURLConnectioncon=(HttpURLConnection)url.openConnection();//建立到目

7、的地的联接con.setRequestMethod(res.getMethod());//设置请求的方法//设置HTTP请求头信息con.setRequestProperty("accept","*/*");con.setRequestProperty("connection","Keep-Alive");con.setRequestProperty("user-agent","Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");con.setDoInput

8、(true);if(res.getMethod().equals("POST")){//如果为Post请求则发送请求数据con.setDoOutput(true);con.getOutputStream().write(res.getQueryData().getBytes());con.getOutputStream().flush();}//通过BufferedReader一行行的读取数据,如果你需要的是全部

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。