1. 设置请求头消息User-Agent模拟浏览器
Demo01.java
package com.andrew.httpClient.chap02;
import org.apache.http.HttpEntity;
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;
public class Demo01 {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
HttpGet httpGet = new HttpGet("http://www.tuicool.com/"); // 创建http get实例
// 模拟浏览器
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
HttpEntity entity = response.getEntity(); // 获取返回实体
System.out.println("网页内容:" + EntityUtils.toString(entity, "utf-8")); // 获取网页内容
response.close(); // response关闭
httpClient.close(); // httpClient关闭
}
}
2. 获取响应内容类型Content-Type
Demo02.java
package com.andrew.httpClient.chap02;
import org.apache.http.HttpEntity;
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;
public class Demo02 {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
HttpGet httpGet = new HttpGet("http://central.maven.org/maven2/HTTPClient/HTTPClient/0.3-3/HTTPClient-0.3-3.jar"); // 创建httpget实例
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
HttpEntity entity = response.getEntity(); // 获取返回实体
System.out.println("Content-Type:" + entity.getContentType().getValue());
// System.out.println("网页内容:"+EntityUtils.toString(entity, "utf-8")); //
// 获取网页内容
response.close(); // response关闭
httpClient.close(); // httpClient关闭
}
}
运行结果:
Content-Type:application/java-archive
3. 获取响应状态Status
200正常
403拒绝
500服务器报错
400未找到页面
Demo03.java
package com.andrew.httpClient.chap02;
import org.apache.http.HttpEntity;
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;
public class Demo03 {
public static void main(String[] args) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建httpClient实例
HttpGet httpGet = new HttpGet("http://www.open1111.com/"); // 创建httpget实例
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
CloseableHttpResponse response = httpClient.execute(httpGet); // 执行http get请求
System.out.println("Status:" + response.getStatusLine().getStatusCode());
HttpEntity entity = response.getEntity(); // 获取返回实体
System.out.println("Content-Type:" + entity.getContentType().getValue());
// System.out.println("网页内容:"+EntityUtils.toString(entity, "utf-8")); //
// 获取网页内容
response.close(); // response关闭
httpClient.close(); // httpClient关闭
}
}
Status:200
Content-Type:text/html;charset=UTF-8
分享到:
相关推荐
在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....
- **HttpURLConnection**:Java标准库提供的基础HTTP客户端,可以用来发送GET和POST请求,模拟浏览器行为。 - **Apache HttpClient**:一个功能强大的HTTP客户端库,提供了更灵活和高效的API来处理HTTP请求。 - *...
在本篇文章中,我们将深入探讨如何使用Java HttpClient来抓取网页数据以及如何打包成jar文件。 **一、Java HttpClient简介** Java HttpClient 是 Apache HttpClient 库的一部分,它提供了丰富的功能,包括连接管理...
总的来说,这个网页数据抓取工具利用了C#的强大力量,结合AJAX异步加载数据的特点,提供了一个全面的解决方案,从模拟浏览器访问网页,到提取和存储数据,再到对不熟悉JavaScript用户的辅助支持,覆盖了数据抓取的全...
在后续的HTTP请求中,通过`HttpClient`的`setCookieStore()`方法设置这个`CookieStore`,这样HTTPClient就会自动添加Cookie到请求头,模拟浏览器的行为。 六、实战代码示例 ```java CloseableHttpClient ...
3. 网页抓取和分析方法的实现:文章中提出的基于HttpClient与HTMLParser的网页抓取解析方法,结合了两者的优点,实现了快速且有效的网页内容抓取和正文提取。该方法能够针对特定的网页内容进行深入分析,并能够应对...
HttpClient允许我们设置各种请求头,如User-Agent,以模拟真实的浏览器行为,避免被目标网站识别为爬虫并封禁。同时,我们还可以利用它处理GET、POST等不同类型的HTTP请求。 为了解析获取到的HTML内容,我们需要一...
学习如何模拟浏览器行为,更换User-Agent,甚至使用代理IP来绕过这些限制。 8. **数据存储**:抓取到的数据通常需要保存,可能是文本文件、数据库或NoSQL存储。理解文件I/O和数据库操作是必要的。 9. **爬虫伦理与...
VB.NET可以通过HttpWebRequest或HttpClient类等网络组件,模拟浏览器行为向服务器发送HTTP请求,获取网页的HTML内容。 在这个压缩包中的代码,很可能利用了Regex(正则表达式)类来进行信息提取。正则表达式是一种...
通过HttpClient,可以模拟浏览器进行网页访问和数据交互,这对于进行Web自动化测试和数据抓取等操作尤为有用。 - **模拟登录的必要性:** 在很多网站的交互过程中,登录是第一步。一旦登录成功,网站会生成一个或多...
它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,它允许我们方便地构建和执行HTTP请求。 HttpClient库提供了...
通过设置定时器,可以定期运行爬虫程序,按照设定的时间间隔抓取网页数据。 4. **异步编程**: 在处理大量请求时,使用异步编程可以提高性能并避免阻塞线程。ASP.NET支持异步控制器和异步操作,使得在等待网络响应时...
Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...
在处理动态内容的网页时,HttpClient可以方便地发送带有特定头信息的请求,模拟浏览器行为,绕过一些安全机制,如用户代理检测、加密或反爬虫策略。 ### 动态数据获取难点 动态数据通常指的是那些需要执行...
- **动态加载内容**:有些网页内容是通过JavaScript动态加载的,可能需要使用像Selenium这样的工具来模拟浏览器行为。 - **反爬策略**:有些网站会使用验证码、IP限制等方式防止爬虫,这时可能需要更复杂的策略,...
我们可以通过浏览器的开发者工具(F12)来获取登录后的Cookie,然后将其设置到HttpClient的Header中。下面是一个设置Cookie的示例代码: ```java HttpGet get = new HttpGet(newUrl); get.addHeader(new ...
在绕过验证码的情况下,可能需要利用HttpClient的特性来模拟浏览器行为,例如设置User-Agent,保持session状态,或者利用代理服务器。 2. **Jsoup**: Jsoup是一个强大的Java库,用于处理HTML文档,它提供了类似于...
例如,设置User-Agent以模拟浏览器: ```csharp using System.Net.Http; HttpClient httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64;...