我利用的是4.5.2的jar包,可以在官网上下载,下载地址为http://hc.apache.org/downloads.cgi,我这里主要实现了登陆的主页的代码,如果需要登陆到博客之类的就自己更换连接的地址。我这里使用的是SpringBoot的进行测试的。
SpringBoot的实现代码为
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>testImport</groupId> <artifactId>testImport</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
Java的代码部分为
package com; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.CookieStore; import org.apache.http.client.ResponseHandler; 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.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.cookie.Cookie; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.cookie.BasicClientCookie; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Created by Administrator on 2016/5/11. */ @RestController @EnableAutoConfiguration @ComponentScan @SpringBootApplication public class TestImport { @RequestMapping public String getHello(){ return "hello"; } @RequestMapping(value = "/testLogin") public String testLogin(){ CloseableHttpClient client = HttpClients.createDefault(); CloseableHttpResponse response = null; String html = ""; try { //可以使用谷歌浏览器的F12查看登陆的时候需要那些信息 //首先到登陆的界面进行登陆 HttpPost httpPost = new HttpPost("http://www.iteye.com/login"); httpPost.addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"); httpPost.addHeader("Accept-Encoding","gzip, deflate, sdch"); httpPost.addHeader("Accept-Language","h-CN,zh;q=0.8"); httpPost.addHeader("Host","www.iteye.com"); httpPost.addHeader("Proxy-Connection","keep-alive"); httpPost.addHeader("Upgrade-Insecure-Requests","1"); httpPost.addHeader("Referer","http://www.iteye.com/login"); //使用的是谷歌浏览器登陆 httpPost.addHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"); httpPost.addHeader("Cookie","_javaeye_cookie_id_=1466393515330269; __utmt=1; _javaeye3_session_=BAh7CDoQX2NzcmZfdG9rZW4iMVo1SlVaOEhrTTdia0w3Tm40MDJqY3BtbHhVd25lU1lPTDI5MGZVdDFLMVk9OhFvcmlnaW5hbF91cmkiGmh0dHA6Ly93d3cuaXRleWUuY29tLzoPc2Vzc2lvbl9pZCIlMjU0YzJiMDgwYjRiZjg4YzI0YmJlNmFhYWFhYzdmNjA%3D--6e802374f064e10c59fccc0af2965c29472e77e9; __utma=191637234.388365526.1466393674.1466393674.1466393674.1; __utmb=191637234.3.10.1466393674; __utmc=191637234; __utmz=191637234.1466393674.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); dc_tos=o91wpp; dc_session_id=1466393821804"); httpPost.addHeader("Cache-Control","max-age=0"); //httpPost.addHeader("Content-Length","143"); httpPost.addHeader("Origin","http://www.iteye.com"); httpPost.addHeader("Content-Type","application/x-www-form-urlencoded"); List formParams = new ArrayList(); formParams.add(new BasicNameValuePair("name","*****")); formParams.add(new BasicNameValuePair("password","*******")); formParams.add(new BasicNameValuePair("authenticity_token","Z5JUZ8HkM7bkL7Nn402jcpmlxUwneSYOL290fUt1K1Y=")); formParams.add(new BasicNameValuePair("button","登 录")); UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(formParams,"UTF-8"); httpPost.setEntity(urlEncodedFormEntity); CookieStore cookieStore = new BasicCookieStore(); ResponseHandler responseHandler = new BasicResponseHandler(); //String res = client.execute(httpPost,responseHandler,httpClientContext).toString(); response = client.execute(httpPost); //进行缓存 if(response != null){ for(Header header :response.getAllHeaders()){ //if("Set-Cookie".equals(header.getName())){ Cookie cookie = new BasicClientCookie(header.getName(),header.getValue()); cookieStore.addCookie(cookie); //} } } HttpClientContext httpClientContext = HttpClientContext.create(); httpClientContext.setCookieStore(cookieStore); // 设置需要登陆的到那个页面 String loginPage = "http://www.iteye.com"; HttpGet httpget = new HttpGet(loginPage); if(response != null){ //缓存 for(Header header :response.getAllHeaders()){ if("Set-Cookie".equals(header.getName())){ httpget.setHeader(header); } } } HttpResponse httpResponse = client.execute(httpget); // 必须是同一个HttpClient HttpEntity entity = httpResponse.getEntity(); html = EntityUtils.toString(entity, "GBK"); System.out.println(html); httpget.releaseConnection(); }catch (IOException e){ e.printStackTrace(); }finally { try { response.close(); client.close(); } catch (IOException e) { e.printStackTrace(); } } return html; } public static void main(String [] args){ SpringApplication.run(TestImport.class); } }
相关推荐
总的来说,HTMLPARSER和HTTPCLIENT是构建网络爬虫的重要工具,它们可以帮助开发者高效地抓取和解析网页数据,从而实现自动化的信息收集和分析。通过不断学习和实践,你可以掌握更多网络爬虫的技巧,应对更复杂的网页...
这个库广泛应用于各种场景,如网页抓取、服务端自动化测试、API调用等。在这个"2015-9 httpclientdemo 2017.3.15"的资源中,我们很可能是看到一个基于HttpClient的示例项目,可能包含了如何使用HttpClient进行HTTP...
在实际应用中,Apache HttpClient可以用于各种场景,如Web服务调用、爬虫项目、自动化测试等。博客可能涵盖这些场景的具体实现,包括设置请求头、处理HTTP状态码、处理响应实体、异常处理等。同时,它可能还会涉及...
这篇博客文章(链接:https://eof.iteye.com/blog/2153595)可能详细介绍了如何利用Apache HttpClient实现这个功能。 Apache HttpClient 提供了 `HttpClient` 类,它是执行HTTP请求的核心组件。为了模拟HTML表单...
在IT行业中,文件上传和查看是常见的功能,特别是在web应用和桌面应用中。...在WinForms环境中,我们可以利用.NET Framework提供的工具和控件,有效地实现批量上传图片至指定目录,并在应用内查看这些图片。
在创建网络爬虫时,Groovy可以利用其与Java的互操作性,利用如Jsoup或Apache HttpClient等库来解析HTML和发送HTTP请求。 描述中提到的“NULL 博文链接:https://key232323.iteye.com/blog/705134”表明完整的教程或...
2. **网络编程**:使用Java的HttpURLConnection或者HttpClient类进行网络请求,获取百度关键词的相关数据。 3. **JSON处理**:由于网络返回的数据通常是JSON格式,所以会用到Gson或Jackson等库来解析和构建Java对象...
9. **爬虫框架**:可能利用如Scrapy这样的框架,简化开发流程,提高开发效率。 通过这个项目,开发者可以学习到如何构建一个完整的网络爬虫系统,从设计到实现,再到优化,对提升Java编程能力以及数据处理技能非常...
描述中的链接指向了博主ihuning在iteye博客上的一篇具体文章,虽然描述部分是空的,但我们可以推测这篇文章可能详细介绍了作者在学习和使用HTTPComponents过程中的一些经验和心得,可能涵盖了如何设置请求、处理响应...
网页抓取,也被称为网络爬虫或数据抓取,是一种自动化技术,用于从互联网上提取大量数据。在本例中,我们关注的标题是“网页抓取例子”,这表明我们将探讨如何实现一个简单的网页抓取程序。描述部分虽然为空,但我们...
开发者可以利用FreeMarker的强大功能,自定义模板来满足特定的数据展示需求,同时,数据采集部分则负责从各种来源获取信息,两者协同工作,构建出能够自动化处理和呈现数据的系统。如果想要深入了解这个系统,阅读...
这种技术在数据抓取和自动化信息处理中非常常见,尤其适用于没有提供API接口或者接口有限制的网站。 【描述】提到的"博文链接:https://ideasforjava.iteye.com/blog/641342"可能是一个详细的教程或示例代码分享,...
标题中的“一些常用的jar包”指的是Java开发中经常使用的外部库文件,它们包含了预编译的Java类和资源,使得开发者无需从零开始编写所有代码,可以便捷地利用已有的功能模块。这些jar包通常包含了各种框架、工具库...