JAVA网络爬虫(2)-----带get或post请求参数

1.Get请求参数的

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.http.client.utils.*;

//get带参数请求
public class demo01 {
    public static void main(String[] args) throws Exception {
      //打开浏览器创建HttpClient对象
        CloseableHttpClient httpClient= HttpClients.createDefault();
        //设置请求地址:http://www.itheima.com/search?keys=Java
		//创建URIBuilder连接
		URIBuilder uriBuilder =new URIBuilder("http://www.itheima.com/search");
		//设置参数,如果设置多个参数在直接.setParameter(key,value)直接加即可
		uriBuilder.setParameter("key","Java");
		//创建HttpGet对象,设置URL访问地址
        HttpGet httpGet=new HttpGet(uriBuilder.build());
		System.out.println("发送请求的信息"+httpGet);
        //按回车发起请求,返回响应,使用HttpClient对象发起请求
        CloseableHttpResponse response=null;
		try{
			response=httpClient.execute(httpGet);
			//j解析响应,
			if(response.getStatusLine().getStatusCode()==200){
				String content= EntityUtils.toString(response.getEntity(),"UTF-8");
				System.out.println(content.length());
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			//释放资源
			if(response==null){
				try{
					response.close();
					httpClient.close();//关闭浏览器
				}catch(Exception e){
					e.printStackTrace();
				}
				
			}
		}
    }
}

2.Post请求参数的

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

//Post带参数请求
public class demo02 {
    public static void main(String[] args) throws Exception {
      //打开浏览器创建HttpClient对象
        CloseableHttpClient httpClient= HttpClients.createDefault();
		//创建HttpPost请求,设置URL访问路径
		HttpPost httpPost=new HttpPost("http://www.itheima.com/search");
		//声明List集合,封装表单中的参数
		List<NameValuePair> params=new ArrayList<NameValuePair>();
		//设置请求地址为http://www.itheima.com/search?keys=Java
		//创建表单的Entity对象,第一个参数是封装好的表单数据,第二个是参数是编码
		UrlEncodedFormEntity formEntity=new UrlEncodedFormEntity(params,"utf-8");
		//设置表单的Entity对象到Post请求中
		httpPost.setEntity(formEntity);
        //按回车发起请求,返回响应,使用HttpClient对象发起请求
        CloseableHttpResponse response=null;
		try{
			response=httpClient.execute(httpPost);
			//j解析响应,
			if(response.getStatusLine().getStatusCode()==200){
				String content= EntityUtils.toString(response.getEntity(),"UTF-8");
				System.out.println(content.length());
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			//释放资源
			if(response==null){
				try{
					response.close();
					httpClient.close();//关闭浏览器
				}catch(Exception e){
					e.printStackTrace();
				}
				
			}
		}
    }
}

3.连接池请求

import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

//使用连接池进行请求
public class demo03 {
    public static void main(String[] args) throws Exception {
        //创建连接池管理器
        PoolingHttpClientConnectionManager cm=new 
            PoolingHttpClientConnectionManager();
        //设置最大连接数
        cm.setMaxTotal(100);
        //设置每个主机的最大连接数
        cm.setDefaultMaxPerRoute(10);//让对于每个主机的连接数进行控制,防止多少去爬取一个主机
        //使用连接池管理器发起请求
        doGet(cm);
        doGet(cm);
    }
    public static void doGet(PoolingHttpClientConnectionManager cm){
        //b不是每次创建新的HttpClient 而是从连接池中获取httpClient对象
        CloseableHttpClient httpClient =HttpClients.custom().setConnectionManager(cm).build();
        HttpGet httpGet=new HttpGet("http://www.itcast.cn");

        CloseableHttpResponse response=null;
        try{
            response=httpClient.execute(httpGet);
            //j解析响应,
            if(response.getStatusLine().getStatusCode()==200){
                String content= EntityUtils.toString(response.getEntity(),"UTF-8");
                System.out.println(content.length());
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //释放资源
            if(response==null){
                try{
                    response.close();
                    httpClient.close();//关闭浏览器
                }catch(Exception e){
                    e.printStackTrace();
                }
                
            }
        }
    }
}
 

4.请求参数

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.http.client.utils.*;
import org.apache.http.client.config.RequestConfig;

public class demo04 {
	public static void main(String[] args){

		CloseableHttpClient httpClient=HttpClients.createDefault();
		//创建HttpGet对象设置URL访问路径
		HttpGet httpGet=new HttpGet("http://www.itcast.cn");
		//配置请求信息
		RequestConfig config=RequestConfig.custom()
			.setConnectTimeout(1000)  ///创建连接的最长时间,单位是毫秒
			.setConnectionRequestTimeout(500) //创建获取连接的最长时间
			.setSocketTimeout(10*1000)   //设置数据传输的最长时间
			.build();
		httpGet.setConfig(config);
		CloseableHttpResponse response=null;
		try{
			response=httpClient.execute(httpGet);
			//解析响应
			if(response.getStatusLine().getStatusCode()==200){
				String content= EntityUtils.toString(response.getEntity(),"UTF-8");
				System.out.println(content.length());
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			//释放资源
			if(response==null){
				try{
					response.close();
					httpClient.close();//关闭浏览器
				}catch(Exception e){
					e.printStackTrace();
				}
				
			}
		}
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值