Java HttpClient爬虫请求

这篇具有很好参考价值的文章主要介绍了Java HttpClient爬虫请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

**本项目采用spring-boot构建, maven工程

添加依赖

pom文件
<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>org.test</groupId>
  <artifactId>testDome</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  <dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
  <version>4.5.5</version>
  </dependency>
  <dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>fastjson</artifactId>
  <version>1.2.47</version>
  </dependency>
  </dependencies>
</project>

GET 无参形式

package testDemo;

import org.apache.http.Header;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
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 DoGET {

    public static void main(String[] args) throws Exception {


//        RequestConfig config = RequestConfig.custom().setRedirectsEnabled(false).build();//不允许重定向
//        CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(config).build();


//        proxyHost -- 代理ip; proxyPort -- 端口号
//        int proxyPort = 8000;
//        String proxyHost = "192.10.2.125";
//        HttpHost proxy = new HttpHost(proxyHost, proxyPort, "HTTP");

        //创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();

        //get请求(忽略SSL证书),获取结果
        // TODO: 2020/4/27  忽略SSL证书



        //创建http GET请求
        HttpGet get = new HttpGet("http://www.baidu.com");
//        CloseableHttpResponse response = httpclient.execute(proxy, get);
        CloseableHttpResponse response = httpclient.execute(get);

        try {
            // 执行请求
            response = httpclient.execute(get);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                //请求体内容
                
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");

                //内容
                System.out.println("<<" + content + ">>");
                System.out.println("内容长度:" + content.length());

//                Header[] cookie =  response.getHeaders("Set-Cookie");

            }
        } finally {
            if (response != null) {
                response.close();
            }
            //相当于关闭浏览器
            httpclient.close();
        }
    }
}

GET带参请求

package testDemo;

import java.io.File;
import java.net.URI;

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

/**
 * 带参数的GET请求
 * 两种方式:
 * 1.直接将参数拼接到url后面 如:?wd=java
 * 2.使用URI的方法设置参数 setParameter("wd", "java")
 */
public class DoGETParam {
    public static void main(String[] args) throws Exception {
        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 定义请求的参数
        URI uri = new URIBuilder("http://www.baidu.com/s").setParameter("wd", "java").build();
        // 创建http GET请求
        HttpGet httpGet = new HttpGet(uri);
        //response 对象
        CloseableHttpResponse response = null;
        try {
            // 执行http get请求
            response = httpclient.execute(httpGet);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                //内容
                System.out.println("内容长度:" + content.length());
                System.out.println("内容<<:" + content);
            }
        } finally {
            if (response != null) {
                response.close();
            }
            httpclient.close();
        }
    }
}

POST无参请求

package testDemo;

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.util.EntityUtils;

public class DoPOST {
    public static void main(String[] args) throws Exception {




        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 创建http POST请求
        HttpPost httpPost = new HttpPost("http://www.oschina.net/");
        //伪装浏览器请求
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36");
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpclient.execute(httpPost);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                //内容写入文件
                System.out.println(">>" + content);
                System.out.println("内容长度:" + content.length());
            } else {
                System.out.println(response.getStatusLine().getStatusCode());
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                System.out.println(">>" + content);
            }
        } finally {
            if (response != null) {
                response.close();
            }
            httpclient.close();
        }
    }
}

POST带参请求

package testDemo;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

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;

/**
 * 带有参数的Post请求
 * Mengtao
 */
public class DoPOSTParam {
    public static void main(String[] args) throws Exception {
        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 创建http POST请求
        HttpPost httpPost = new HttpPost("http://www.bcia.com.cn/bcia/FAQ/search");
        // 设置2个post参数
        List<NameValuePair> parameters = new ArrayList<NameValuePair>(0);
        parameters.add(new BasicNameValuePair("lang", "cn"));
        parameters.add(new BasicNameValuePair("pageNum", "1"));
        // 构造一个form表单式的实体
        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(parameters);
        // 将请求实体设置到httpPost对象中
        httpPost.setEntity(formEntity);
        //伪装浏览器
        httpPost.setHeader("Referer", "http://www.bcia.com.cn/cjwt.html");
        httpPost.setHeader("Host", "www.bcia.com.cn");
        httpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36");


        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpclient.execute(httpPost);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                System.out.println("内容" + content);
                System.out.println("内容长度:" + content.length());
            } else
                System.out.println("内容111" + response.getStatusLine().getStatusCode());
        } finally {
            if (response != null)
                response.close();
        }
        httpclient.close();
    }
}

文章来源地址https://www.toymoban.com/news/detail-590386.html

到了这里,关于Java HttpClient爬虫请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [最新]简易版本Java HttpClient POST请求调用OpenAI(ChatGPT3/3.5/4)相关接口核心方法(附100个OpenAI/ChatGPT key)

    前言 当下,OpenAI 存在着许多令人惊叹的技术,如 ChatGPT3/3.5/4,它们能够生成高质量的文章、翻译语言、自动生成代码,并且在许多领域都取得了广泛的应用。本文将向您介绍如何使用 Java HttpClient 调用 OpenAI 的 ChatGPT3/3.5/4 接口(如果需要支持Spring,并提供了 100 个 OpenAI/Chat

    2023年04月27日
    浏览(64)
  • Java爬虫 通过Chromedriver+Chrome浏览器+selenium获取页面的请求和响应(未完全实现)

    因为最近看到一个软件可以实现网页的识别,自动导入网页的内容,感觉这个功能很厉害(真心佩服设计那个软件的人)。但不清楚这个软件的网页识别的实现,也没有接触过相关的技术,就上网搜索并学习一些相关的技术,所以有了这篇文章。但是只能获取简单的请求,一

    2024年02月13日
    浏览(74)
  • 用java语言写一个网页爬虫 用于获取图片

    以下是一个简单的Java程序,用于爬取网站上的图片并下载到本地文件夹: 这个程序首先读取指定网址的HTML源码,然后从中提取出所有的图片URL。最后,程序利用 Java 的 IO 功能下载这些图片并保存到指定的本地文件夹中。 需要注意的是,该程序只是一个简单的演示,实际使

    2024年02月11日
    浏览(49)
  • Java进阶篇--HttpClient工具类

    目录 什么是HttpClient HttpClient的注意事项 HttpClient的使用流程 HttpClient常用方法 HttpClient工具类 添加依赖 HttpClient 是 Apache HttpComponents 的一个子项目,旨在提供高效的、最新的、功能丰富的 HTTP 协议客户端编程工具包。它是一个 Java 库,可用于在 Java 应用程序中发送 HTTP 请求并处

    2024年02月10日
    浏览(60)
  • Java开源工具库使用之httpclient

    HttpClient 成立于2001年,是 Apache Jakarta Commons 项目下的子项目,2004 年离开 Commons ,提升成为一个单独的 Jakarta 项目。2005 年,Jakarta 创建了 HttpComponents 项目,目标是开发 HttpClient 3.x 的继任者。2007 年, Commons 项目,也就是 HttpClient 项目的发源地,离开了 Jakarta , 成为了1个新的

    2024年02月06日
    浏览(50)
  • Java中常见的几种HttpClient调用方式

    一、HttpURLConnection调用 方式一: 方式二: 缺点:不能直接使用池化技术,需要自行处理输入输出流 二、apache common封装HttpClient 引入依赖 实现 三、CloseableHttpClient 可以使用连接池保持连接,并且过期自动释放。引入jar包 引入依赖 实现 非连接池连接: 四、OkHttp3 引入依赖 实

    2024年02月04日
    浏览(56)
  • java后端对接外部系统(HttpClient HttpPost)

    最近遇到一个需求对接外部系统,我们自己的系统发送请求,根据请求内容的不同调用不同的外部系统。举例:我们是做互联网医院的,根据医生开处方选择药店的不同,调用各药店自己的系统,返回结果 可以学到对接外部系统的一些设计 构造需要的json java项目中HTTPPost请求

    2024年02月15日
    浏览(50)
  • WebClient, HttpClient, OkHttp: 三个Java HTTP客户端的比较

    在Java世界中,有许多用于发送HTTP请求的库。在本文中,我们将重点介绍并比较三种流行的HTTP客户端:WebClient,HttpClient和OkHttp。我们将通过讲解它们的基本概念,使用方法和示例,以及它们的优缺点,帮助你选择最适合你的HTTP客户端。 WebClient是Spring 5中引入的非阻塞,反应

    2024年02月08日
    浏览(41)
  • java 远程调用 httpclient 调用https接口 忽略SSL认证

    httpclient 调用https接口,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。下面是忽略校验过程的代码类:SSLClient  然后再调用的远程get、post请求中使用SSLClient 创建Httpclient ,代码如下:

    2024年02月11日
    浏览(42)
  • 0基础→自动化测试框架实现:java + testng + httpclient + allure

    必备基础 java基础:https://www.cnblogs.com/uncleyong/p/15828510.html 配置文件解析(properties):https://www.cnblogs.com/uncleyong/p/15867779.html fastjson的使用(处理json字符串、json数组):https://www.cnblogs.com/uncleyong/p/16683578.html jsonpath的使用:https://www.cnblogs.com/uncleyong/p/16676791.html java操作excel(通过POI):

    2024年02月16日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包