`
kavian
  • 浏览: 10080 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

HttpClient爬虫

 
阅读更多

HttpClient是一个很方便进行Http连接操作的工具包,用它可以设置代理和模拟浏览器下载网页,对于爬虫程序来说,是特别好的工具。
它提供的 HTTP 的访问主要是通过 GetMethod 类和 PostMethod 类来实现的,他们分别对应了 HTTP Get 请求与 Http Post 请求.
下面我分别给出两种访问方式的代码及注意事项:

get方式:

   //生成 HttpClinet 对象
          HttpClient client = new DefaultHttpClient();   
     //生成 GetMethod 对象
     HttpGet httpGet = new HttpGet( psURL );
     //设置请求头,这里很关键,细节在注意事项中描述
     httpGet.setHeader("user-agent", "Mozilla/5.0 (Windows NT 5.1; rv:8.0.1) Gecko/20100101") ;
     httpGet.setHeader("accept", "*/*") ;
     httpGet.setHeader("accept-language", "zh-CN") ;
     httpGet.setHeader("accept-encoding", "utf-8, deflate") ;
    
     StringBuffer strBuf = new StringBuffer();    
  try {
      //执行 HTTP GET 请求,获取响应
      HttpResponse response = client.execute(httpGet);
      //根据响应码判断是否正确获取响应
      if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
          //若正确获得响应则对内容进行处理
          HttpEntity entity = response.getEntity();    
          if (entity != null) {    
              BufferedReader reader = new BufferedReader(    
                  new InputStreamReader(entity.getContent(), "UTF-8"));    
              String line = null;    
              if (entity.getContentLength() > 0) {    
                  strBuf = new StringBuffer((int) entity.getContentLength());    
                  while ((line = reader.readLine()) != null) {    
                      strBuf.append(line);    
                  }    
              }    
          }    
   //释放连接
          if (entity != null) {    
              EntityUtils.consume(entity);    
          }    
      } 
  } catch (ClientProtocolException e) {
   
   e.printStackTrace();
  } catch (IOException e) {
   
   e.printStackTrace();
  }    
 

 

post方式:
 

//存放参数
 List<NameValuePair> nvps= new ArrayList<NameValuePair>();
 nvps.add(new BasicNameValuePair("txtUserName", UAERNAME));
 nvps.add(new BasicNameValuePair("txtPassword", PASSWORD));
 nvps.add(new BasicNameValuePair("ImageButton1.x", "17"));
 nvps.add(new BasicNameValuePair("ImageButton1.y", "10"));
 nvps.add(new BasicNameValuePair("__VIEWSTATE", FLAG));
 //生成 PostMethod 对象
 HttpPost httpPostLogin = new HttpPost(URL)
 //添加参数
 httpPostLogin.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
 //以下为执行请求,获取响应,并对响应进行处理,与get方式类似
 httpResponseLogin = getHttpClientInstance().execute(httpPostLogin);
 status=httpResponseLogin.getStatusLine().getStatusCode();
   
 if (status == 302||status==HttpStatus.SC_OK) {
  Header[] locationHeader = httpResponseLogin.getHeaders("location");
  if (locationHeader != null) {
   HttpEntity httpEntityLogin = httpResponseLogin.getEntity();
     
   if (httpEntityLogin != null) {
    EntityUtils.consume(httpEntityLogin);
      
     }
    }
   }
   
  } catch (Exception e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
  }
 


以下为我在写爬虫程序的时候遇到的问题及解决方案,权作注意事项吧:

1、关于get方式设置请求头的问题,最令人头疼:
   1)、上面实例中列出的四种请求头一般情况下已够用,无需添加。
   2)、要特别注意accept-encoding的值,有两种:gzip, deflate 和utf-8, deflate。
 gzip是经过压缩的大量数据的,一般不常用;
 utf-8符合一般使用规律,具体可以两种都尝试一下,或者干脆不加该请求头。
2、无论哪种方式,接受后一定要使用
  EntityUtils.consume(entity);释放连接

分享到:
评论

相关推荐

    使用HTMLPARSER和HTTPCLIENT制作网络爬虫,附赠相关技术文档。

    本教程将聚焦于如何使用HTMLPARSER和HTTPCLIENT库来构建一个基础的网络爬虫。这两个工具是Java开发者常用来解析HTML和进行HTTP请求的重要库。 首先,HTMLPARSER是一个开源的Java库,它可以解析HTML文档并提供类似于...

    java httpclient jsoup爬虫

    初级爬虫

    httpclient 网络爬虫必备包

    本篇文章将深入探讨HttpClient库以及与其相关的HTMLParser,帮助你更好地理解和应用这些工具来构建高效的网络爬虫。 首先,HttpClient库是Apache软件基金会的一个开源项目,提供了一套全面的API,用于执行各种HTTP...

    jsoup+httpclient j简单爬虫

    **JSoup + HttpClient 简单爬虫** 在信息技术领域,数据抓取,或称“爬虫”,是一种自动化获取网页信息的技术。JavaScript Object Notation (JSON) Soup 和 HttpClient 是两个在Java开发中常用于实现爬虫功能的库。...

    爬虫:httpclient+jsoup

    本文将详细探讨使用Java中的两种库——HttpClient和Jsoup,以及它们结合使用来构建网页爬虫的方法。 HttpClient是Apache软件基金会的一个项目,提供了对HTTP协议的全面支持,包括请求/响应模型、连接管理、重定向...

    网络爬虫 apache HttpClient

    在阅读博文《网络爬虫 apache HttpClient》时,作者可能详细介绍了如何初始化HttpClient实例,设置请求参数,处理响应,以及如何利用HttpClient进行多线程爬虫开发。文章可能还会涵盖一些实战案例,比如抓取特定网站...

    使用 HttpClient 和 HtmlParser 实现简易网络爬虫

    在使用HttpClient和HtmlParser实现网络爬虫的过程中,首先需要设置开发环境。这里推荐使用Eclipse Europa作为集成开发环境(IDE),并确保安装了JDK 1.6。在Eclipse中创建一个新的JAVA工程,并将HttpClient和...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    常见的Java爬虫库包括Jsoup、HttpClient、HtmlUnit等,它们各具特色,能够处理不同类型的网页内容。 ### Jsoup库解析 Jsoup是一个强大的HTML解析器,它可以帮助开发者从HTML文档中提取和操作数据。Jsoup可以连接到...

    HttpClientHelper 工具类

    综上所述,HttpClientHelper 是一个实用的HTTP客户端工具类,结合了HttpClient的强大功能和单例模式的高效管理,为C#开发者提供了便捷的网络请求解决方案,特别适合于爬虫开发和需要频繁进行HTTP通信的项目。

    httpclient + jsoup java爬虫DEMO

    java爬虫,代码写的有点丑,反正是能用。 今天给大家分享一个多线程的知识点,和线程池,最近任务是写爬虫,五百个网址,循环很慢,然后考虑用多线程,今天看了一下多线程,氛围继承thread 和实现runnuble接口,...

    爬虫 httpclient所有jar

    httpclient-4.3.3.jar httpclient-cache-4.3.3.jar httpcore-4.3.2.jar httpmime-4.3.3.jar javabase64-1.3.1.jar json.jar json-lib-2.4-jdk15.jar jsoup_1.6.2_add.jar mysql-connector-java.5.1.7.jar sqljdbc4....

    httpclient

    《HttpClient:网络爬虫的核心工具》 HttpClient,作为Java领域中的一个强大库,是网络爬虫开发中的核心组件。它提供了丰富的API,使得开发者能够高效、灵活地进行HTTP请求的发送与响应的处理,从而实现数据的抓取...

    java爬虫需要的jsoup包和httpclient包.rar

    在这个压缩包文件中,包含了两个关键的库:Jsoup和Httpclient,它们是Java爬虫开发中常用的工具。 **Jsoup** 是一个Java库,设计用于处理实际世界的HTML。它提供了非常方便的API,用于提取和操作数据,使用DOM、CSS...

    HTTPClient 的一个封装

    这个“HTTPClient的一个封装”显然指的是对Apache HttpClient库进行了定制化处理,以适应特定项目需求或者简化API使用。下面将详细讨论HttpClient的核心概念、封装的目的以及可能实现的方式。 HttpClient是Apache...

    apache-httpclient应用所有jar

    在本文中,我们将深入探讨HttpClient的核心概念、主要功能以及如何使用它来实现网络爬虫。 **HttpClient 主要特点** 1. **异步和同步API**: HttpClient 提供了同步和异步两种API,以适应不同的应用场景。同步API...

    使用 HttpClient 和 HtmlParser 实现简易爬虫

    在本文中,我们将探讨如何使用 HttpClient 和 HtmlParser 这两个Java库来实现一个简单的网页爬虫。HttpClient 是一个强大的HTTP客户端库,而 HtmlParser 则是一个用于解析HTML文档的高效工具,两者结合可以帮助我们...

    HttpClient 4.5 封装的工具类 HttpUtil 可用于爬虫和模拟登陆

    基于Apache HttpClient 4.5.2 封装的工具类 HttpUtil 可用于爬虫和模拟登陆。使用新的语法后比3.*版本的速度感觉有提升。使用后注意资源的释放 pom 部分,应该不全,需要用的根据代码的import去找maven资源即可。 ...

    java 爬虫需要的jar包们 jsop httpclient

    在这个场景中,`jsoup` 和 `httpclient` 是两个关键的Java库,它们在构建爬虫时发挥着至关重要的作用。 **jsoup** 是一个强大的Java库,用于处理和解析HTML。它的全称是“Java HTML解析器”,它提供了非常友好的API...

    httpclient4.3所需jar包

    本知识点将详细介绍HTTPClient 4.3在爬虫开发中的应用及其主要组件。 一、HTTPClient 4.3的安装与引入 在Java项目中使用HTTPClient 4.3,首先需要下载相关的jar包。提供的"httpclient43"压缩包应包含所有必需的依赖...

Global site tag (gtag.js) - Google Analytics