博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTPClient抓取网页内容
阅读量:6070 次
发布时间:2019-06-20

本文共 2930 字,大约阅读时间需要 9 分钟。

hot3.png

试了下Apache项目HTTPClient抓取网页内容,抓取到的内容可以提取一些想要的东西。

下载httpcomponents-client-4.0.3-bin.zip,将其解压开,新建立一个普通的javaproject,建立一个UserLibrary,将解压开的文件夹下的lib里的jar包加到新建立的UserLibrary中(当然不使用UserLibrary,直接添加到项目中也是OK的),然后新建立一个测试的类,内容如下:

package httpclient;  import java.util.regex.Matcher;  import java.util.regex.Pattern;  import org.apache.http.Header;  import org.apache.http.HttpEntity;  import org.apache.http.HttpResponse;  import org.apache.http.client.HttpClient;  import org.apache.http.client.methods.HttpGet;  import org.apache.http.impl.client.DefaultHttpClient;  import org.apache.http.util.EntityUtils;  public class HttpClientDemo {      public final static void main(String[] args) throws Exception {          HttpClient httpclient = new DefaultHttpClient(); //实例化一个HttpClient          HttpGet httpget = new HttpGet(“http://www.baidu.com/”);          System.out.println(“executing request ” + httpget.getURI());                  // 查看默认request头部信息          System.out.println(“Accept-Charset:” + httpget.getFirstHeader(“Accept-Charset”));          httpget.setHeader(“User-Agent”, ”Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.2)”);                  // 用逗号分隔显示可以同时接受多种编码          httpget.setHeader(“Accept-Language”, ”zh-cn,zh;q=0.5″);          httpget.setHeader(“Accept-Charset”, ”GB2312,utf-8;q=0.7,*;q=0.7″);                 // 验证头部信息设置生效          System.out.println(“Accept-Charset:” + httpget.getFirstHeader(“Accept-Charset”).getValue());          HttpResponse response = httpclient.execute(httpget);//执行          HttpEntity entity = response.getEntity(); //返回服务器响应          System.out.println(“—————————————-”);          System.out.println(response.getStatusLine()); //服务器返回状态              if (entity != null) {              Header[] headers = response.getAllHeaders(); //返回的HTTP头信息              for (int i = 0; i < headers.length; i++) {              System.out.println(headers[i]);          }                  System.out.println(“Response content length: ” + entity.getContentLength());          System.out.println(“—————————————-”);          System.out.println(“Response content: ”);          //String responseString = EntityUtils.toString(response.getEntity());//返回服务器响应的HTML代码           //responseString = new String(responseString.getBytes(“gb2312″),”gbk”);//转换中文          //System.out.println(responseString); //打印出服务器响应的HTML代码          // 将源码流保存在一个byte数组当中,因为可能需要两次用到该流          // 注,如果上面的EntityUtils.toString(response.getEntity())执行了后,就不能再用下面的语句拿数据了,直接用上面的数据          byte[] bytes = EntityUtils.toByteArray(entity);          String charSet = ”";          // 如果头部Content-Type中包含了编码信息,那么我们可以直接在此处获取          charSet = EntityUtils.getContentCharSet(entity);          System.out.println(“In header: ” + charSet);          // 如果头部中没有,那么我们需要 查看页面源码,这个方法虽然不能说完全正确,因为有些粗糙的网页编码者没有在页面中写头部编码信息          if (charSet == null || charSet == ”") {              String regEx = ”

转载于:https://my.oschina.net/wmsjhappy/blog/273639

你可能感兴趣的文章
log4j - springmvc 中设置日志文件的路径
查看>>
Linux CentOS 学习第6天(2018年6月12日)
查看>>
Java程序员从阿里、百度面试回来,这些面试题你们会吗?
查看>>
去除报表参数动态下拉列表框中的Null Value
查看>>
你所遗漏的SpringBoot日志管理知识
查看>>
Java架构师学习路线图
查看>>
MySQL数据库复制概论
查看>>
网吧行业遭到DDOS功击该怎么办?
查看>>
正则辅助工具
查看>>
MongoDB:使用explain()和Index Usage(第2部分)调查查询
查看>>
单片机最小系统-基于LPC1114
查看>>
直面升职加薪,最高效学习营——TMBA线上营等你来战!
查看>>
JVM 中的栈思考
查看>>
死磕 java集合之HashSet源码分析
查看>>
Android原生与H5交互方式
查看>>
Delphi 常用API函数
查看>>
修改或隐藏IIS7.5的Server头信息
查看>>
Exchange Server 2007的即将生命周期,您的计划是?
查看>>
使用star rating星级评分
查看>>
思科设备snmp配置。
查看>>