`

HttpClient模拟浏览器抓取网页

阅读更多
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抓取网页Demo

    在本文中,我们将深入探讨HttpClient的基本用法,以及如何使用它来抓取网页内容。 首先,你需要在项目中引入HttpClient的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org....

    java模拟微信浏览器访问.rar

    - **HttpURLConnection**:Java标准库提供的基础HTTP客户端,可以用来发送GET和POST请求,模拟浏览器行为。 - **Apache HttpClient**:一个功能强大的HTTP客户端库,提供了更灵活和高效的API来处理HTTP请求。 - *...

    java httpclient 抓取 数据 和jar 包

    在本篇文章中,我们将深入探讨如何使用Java HttpClient来抓取网页数据以及如何打包成jar文件。 **一、Java HttpClient简介** Java HttpClient 是 Apache HttpClient 库的一部分,它提供了丰富的功能,包括连接管理...

    网页数据抓取工具,ajax异步数据获取,模拟访问网页提取内容

    总的来说,这个网页数据抓取工具利用了C#的强大力量,结合AJAX异步加载数据的特点,提供了一个全面的解决方案,从模拟浏览器访问网页,到提取和存储数据,再到对不熟悉JavaScript用户的辅助支持,覆盖了数据抓取的全...

    java模拟淘宝登录源码

    在后续的HTTP请求中,通过`HttpClient`的`setCookieStore()`方法设置这个`CookieStore`,这样HTTPClient就会自动添加Cookie到请求头,模拟浏览器的行为。 六、实战代码示例 ```java CloseableHttpClient ...

    基于HttpClient与HTMLParser 的网页正文提取

    3. 网页抓取和分析方法的实现:文章中提出的基于HttpClient与HTMLParser的网页抓取解析方法,结合了两者的优点,实现了快速且有效的网页内容抓取和正文提取。该方法能够针对特定的网页内容进行深入分析,并能够应对...

    蜘蛛抓取网页数据

    HttpClient允许我们设置各种请求头,如User-Agent,以模拟真实的浏览器行为,避免被目标网站识别为爬虫并封禁。同时,我们还可以利用它处理GET、POST等不同类型的HTTP请求。 为了解析获取到的HTML内容,我们需要一...

    网页抓取教程.zip

    学习如何模拟浏览器行为,更换User-Agent,甚至使用代理IP来绕过这些限制。 8. **数据存储**:抓取到的数据通常需要保存,可能是文本文件、数据库或NoSQL存储。理解文件I/O和数据库操作是必要的。 9. **爬虫伦理与...

    VB.NET网页源码爬取.zip

    VB.NET可以通过HttpWebRequest或HttpClient类等网络组件,模拟浏览器行为向服务器发送HTTP请求,获取网页的HTML内容。 在这个压缩包中的代码,很可能利用了Regex(正则表达式)类来进行信息提取。正则表达式是一种...

    httpclient模拟登陆具体实现(使用js设置cookie)

    通过HttpClient,可以模拟浏览器进行网页访问和数据交互,这对于进行Web自动化测试和数据抓取等操作尤为有用。 - **模拟登录的必要性:** 在很多网站的交互过程中,登录是第一步。一旦登录成功,网站会生成一个或多...

    java网络爬虫抓取网页数据

    它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,它允许我们方便地构建和执行HTTP请求。 HttpClient库提供了...

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

    在处理动态内容的网页时,HttpClient可以方便地发送带有特定头信息的请求,模拟浏览器行为,绕过一些安全机制,如用户代理检测、加密或反爬虫策略。 ### 动态数据获取难点 动态数据通常指的是那些需要执行...

    asp.net 抓取网页 网页爬虫

    通过设置定时器,可以定期运行爬虫程序,按照设定的时间间隔抓取网页数据。 4. **异步编程**: 在处理大量请求时,使用异步编程可以提高性能并避免阻塞线程。ASP.NET支持异步控制器和异步操作,使得在等待网络响应时...

    java网页抓取数据

    Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...

    java简单抓取网页内容

    - **动态加载内容**:有些网页内容是通过JavaScript动态加载的,可能需要使用像Selenium这样的工具来模拟浏览器行为。 - **反爬策略**:有些网站会使用验证码、IP限制等方式防止爬虫,这时可能需要更复杂的策略,...

    httpclient绕过验证码直接抓取

    我们可以通过浏览器的开发者工具(F12)来获取登录后的Cookie,然后将其设置到HttpClient的Header中。下面是一个设置Cookie的示例代码: ```java HttpGet get = new HttpGet(newUrl); get.addHeader(new ...

    针对 httpclient4.* 绕验证码获取公司信息 包括 jsoup网页信息的爬虫及htmlUnit对动态网站信息的抓取

    在绕过验证码的情况下,可能需要利用HttpClient的特性来模拟浏览器行为,例如设置User-Agent,保持session状态,或者利用代理服务器。 2. **Jsoup**: Jsoup是一个强大的Java库,用于处理HTML文档,它提供了类似于...

    c#写的自动抓取网页表格中信息

    网络爬虫是一种自动获取网页内容的程序,它通过模拟浏览器行为向服务器发送HTTP请求,接收网页数据,并分析这些数据以提取所需信息。在C#中,开发者可以利用HttpClient类库来发送请求和接收响应。HttpClient提供了一...

Global site tag (gtag.js) - Google Analytics