C/C++教程

HttpClient爬虫登录类模板

本文主要是介绍HttpClient爬虫登录类模板,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

因为最近编写需要登录类的爬虫比较多,所以想封装一个使用的模板,方便以后编写

继承结构

interface mypachong
----abstract mypachongimpl

介绍

mypachong接口,描述了一个爬虫程序需要一个login的方法实现登录操作,并封装get,post请求(未将方法设置未static是考虑到后续多用户爬取时,其实现类可以封装成员变量描述,不同用户信息)

public interface mypachong {
	boolean login();//登录
	HttpResponse get(String url,Map<String,String> map) ;//get
	HttpResponse post(String url,Map<String,String> map);//post
}

mypachong的抽象子类,封装默认的post和get.后续使用只需继承并实现login,即可完成浏览网站的基本操作(post,get),防止出现代码繁多

public abstract class mypachongimpl implements mypachong {
	public CookieStore cookieStore = null;
	public HttpResponse get(String url, Map<String, String> map) {
		//未登录时跑去执行login
		while(cookieStore == null)
			login();
			//根据登录获取的cookieStore创建Htttpclient
		HttpClient httpclient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
		String geturl = url;
		//添加参数
		if (map != null)
			for (Map.Entry<String, String> entry : map.entrySet()) {
				geturl += "&" + entry.getKey() + "=" + entry.getValue();
			}
		HttpGet get = new HttpGet(geturl);
		HttpResponse response = null;
		try {
			response = httpclient.execute(get);
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return response;
	}
	public HttpResponse post(String url, Map<String, String> map) {
	//未登录时跑去执行login
		while(cookieStore == null)
			login();
			//根据登录获取的cookieStore创建Htttpclient
		HttpClient httpclient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build();
		String posturl = url;
		HttpPost post = new HttpPost(posturl);
			//添加参数
		if (map != null) {
			List<NameValuePair> formlist = new ArrayList<NameValuePair>();
			for (Map.Entry<String, String> entry : map.entrySet()) {
				formlist.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
			}
			try {
				UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(formlist, "UTF-8");
				post.setEntity(urlEncodedFormEntity);
			} catch (UnsupportedEncodingException e1) {
				e1.printStackTrace();
			}
		}
		HttpResponse response = null;
		try {
			response = httpclient.execute(post);
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return response;
	}
}
这篇关于HttpClient爬虫登录类模板的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!