HttpClient 抓取网页

资源描述框架RDF及Turtle 文章目录1. RDF1.1 简介1.2 格式1.3 RDF的要求2. Turtle2.1 语法2.1.1 简单三元组2.1.2 Turtle中的命名空间2.1.3 Base URI2.1.4 谓语列表2.1.5 宾语列表2.1.6 空白节点(bNodes)2.1.7 数据类型2.1.8 Class membership2.1.9 空URI2.1.10 集合 1. RDF 1.1 简介 RDF(Resource Description Framework)语义网的标准数据模型,是一个用于描述 Web 上的资 阅读详情

工作间隙.看到一个问题说要用HttpClient来抓取A网页的数据,可是必须要登录后才能访问A.问怎么传递登录用到的cookie值

记得 同一个HttpClient实例 请求过程中是自动记录cookie等数据的。

以下代码 用的是 org.apache.http 下的工具类

package com.test.demo1;

import java.util.List;
import java.util.ArrayList;
import java.io.IOException;
import java.net.SocketTimeoutException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.*;
import org.apache.http.util.EntityUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.conn.params.ConnRoutePNames;



/**模拟登录后抓取网页数据
 * 分页等待拓展,未做
 * @author xxx
 * 用的包是  http://hc.apache.org/downloads.cgi 的HttpClient 4.3.6 (GA) 
 */
public class HttpClientDataDemo {
	
	@SuppressWarnings("deprecation")
	private static final HttpClient client = new DefaultHttpClient(); // 保证目标地址的请求 和 登录的请求是同一个句柄
	
	private static final String username = "im_user";	// 登录的账号
	private static final String password = "im_password";	// 密码
	private static final String aimUrl = "http://pindao.xxx.com/diannao.htm"; // 目标地址
	private static final String login = "https://passport.xxx.com/ids/login"; // 登录地址
	private static final String html_code = "gbk";
	
	// 有些网页会做一些客户端限制
	private static final String USER_AGENT = "User-Agent";
    private static final String AGENT = "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";

    /*** 全局变量类实例*/
    private HttpContext localContext = new BasicHttpContext();
    
    // 如果不为空,则强制设置cookie
    private String cookie;
    // 代理服务器
    private HttpHost proxy;
    
	public static void main(String[] args) throws IOException {
		// 登录
		login(username, password);
		// 其它操作
		getData(aimUrl);
	}

	/**
	 * 其它操作
	 * @param url
	 * @throws IOException
	 */
	static void getData(String url) throws IOException {
		
		HttpGet get = new HttpGet(url);
		HttpResponse response = client.execute(get);
		System.out.println("getData status:" + response.getStatusLine());
		HttpEntity entity = response.getEntity();
		print(entity);
	}

	/**
	 * 执行登录
	 * 
	 * @throws IOException
	 */
	static void login(String user, String pwd) throws IOException {
		HttpPost post = new HttpPost(login);

		// 登录表单的信息 "username" 对应 form 里面用户名的属性 name "password" 同理
		List<NameValuePair> qparams = new ArrayList<NameValuePair>();
		qparams.add(new BasicNameValuePair("username", user));
		qparams.add(new BasicNameValuePair("password", pwd));
		qparams.add(new BasicNameValuePair("url", aimUrl));

		UrlEncodedFormEntity params = new UrlEncodedFormEntity(qparams, html_code); // 网页编码
		post.setEntity(params);
		
		HttpResponse response = client.execute(post);
		System.out.println(response.getAllHeaders());
		System.out.println("login status:"+response.getStatusLine());
		post.abort();
	}

	/**
	 * 打印页面
	 * 
	 * @param entity
	 * @throws IOException
	 */
	private static void print(HttpEntity entity) throws IOException {
        if (entity != null) {
            // 打印响应内容长度    
            System.out.println("Response content length: " + entity.getContentLength());  
            // 打印响应内容    
            System.out.println("Response content: " + EntityUtils.toString(entity));  
        }  
	}
	
	// 代理等等情况 参看 caller
	private String post(HttpEntity entity, String url)
    {
        String result = null;
        HttpPost request = new HttpPost(url);
        request.addHeader(USER_AGENT, AGENT);
        request.addHeader("Accept-Encoding", "gzip");
        if(cookie != null){
            request.setHeader("Cookie", cookie);
        }
        request.setEntity(entity);
        try
        {
            if (proxy != null) {
                result = client.execute(proxy, request, new RedirectionResponsehandler(), localContext);
            } else {
                result = client.execute(request, new RedirectionResponsehandler(), localContext);
            }
            
        }
        catch (SocketTimeoutException e)
        {
            e.printStackTrace();
        }
        catch (ClientProtocolException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        catch (NullPointerException e)
        {
            e.printStackTrace();
        }
        return result;
    }
	
	/**
     * 使用ResponseHandler接口处理响应,HttpClient使用ResponseHandler会自动管理连接的释放,解决了对连接的释放管理
     */
    private class RedirectionResponsehandler implements ResponseHandler<String>
    {

		@Override
		public String handleResponse(HttpResponse response)
				throws ClientProtocolException, IOException {
			// TODO Auto-generated method stub
			return null;
		}
    	
    }
	
	public String getCookie() {
        return cookie;
    }

    public void setCookie(String cookie) {
        this.cookie = cookie;
    }
    
    public void setProxy(String proxyUrl, int port) {
        proxy = new HttpHost(proxyUrl, port);
        client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    }

}

参考代码放上

package com.suning.ebuy.ott.util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.net.ssl.SSLHandshakeException;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpEntityEnclosingRequest;
import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.NoHttpResponseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpRequestRetryHandler;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.GzipDecompressingEntity;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.ExecutionContext;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;
import org.slf4j.LoggerFactory;


/**
 */
public class Caller
{
    /**
    public static final String ENCODE = HTTP.UTF_8;
    private static final String USER_AGENT = "User-Agent";
    private static final String HTTP_GET = "GET";
    private static final String HTTP_POST = "POST";
    private static final String AGENT = "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";

    private static final String HTTP_STR = "xxx.com";
    
    private org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());
    /**
     * 是否是Https请求
     */
    private boolean isHttpsRequest;

    /**
     * 创建DefaultHttpClient实例,同于执行请求
     */
    private final DefaultHttpClient mClient;

    /**
     * 全局变量类实例
     */
    private HttpContext localContext = new BasicHttpContext();
    
    /**
     * 如果不为空,则强制设置cookie
     */
    private String cookie;
    /**
     * 代理服务器
     */
    private HttpHost proxy;

    public Caller()
    {
        mClient = CommonHttpClient.createHttpClient();
        mClient.setHttpRequestRetryHandler(mRequestRetryHandler);
    }

    /**
     * @Description:
     */
    public void setCookieStore(CookieStore cookieStore)
    {
        mClient.setCookieStore(cookieStore);
    }

    /**
     * @Description:
     */
    public CookieStore getCookieStore()
    {
        return mClient.getCookieStore();
    }

    /**
     * 打开https请求
     */
    public void setHttpsRequestOpen()
    {
        isHttpsRequest = true;
    }

    private String getTempUrl()
    {
        String tempUrl = isHttpsRequest ? "" : "";
        if (isHttpsRequest)
        {
            isHttpsRequest = false;
        }
        return tempUrl;
    }

    /**
     * @throws UnsupportedEncodingException
     * @Description:post访问主站通用方法
     */
    public String post(String url, List<NameValuePair> list, String action)
            throws UnsupportedEncodingException
    {
        list = addBasicParams(list);
        return post(new UrlEncodedFormEntity(list, ENCODE), url + action);
    }

    /**
     * @Description:带参数的post通用方法
     */
    public String post(List<NameValuePair> olist, String action)
            throws ClientProtocolException, IOException
    {
        List<NameValuePair> list = addBasicParams(olist);
        return post(new UrlEncodedFormEntity(list, ENCODE), getTempUrl()
                + action);
    }

    /***
     * post通用方法
     */
    private String post(HttpEntity entity, String url)
    {
        String result = null;
        HttpPost request = new HttpPost(url);
        request.addHeader(USER_AGENT, AGENT);
        logger.debug("http post url", url);
        request.addHeader("Accept-Encoding", "gzip");
        if(cookie != null){
            request.setHeader("Cookie", cookie);
        }
        request.setEntity(entity);
        try
        {
            if (proxy != null) {
                result = mClient.execute(proxy, request, new RedirectionResponsehandler(), localContext);
            } else {
                result = mClient.execute(request, new RedirectionResponsehandler(), localContext);
            }
            
            logger.debug("http post result", result);
        }
        catch (SocketTimeoutException e)
        {
            logger.warn(e.getMessage(), e);
        }
        catch (ClientProtocolException e)
        {
            logger.warn(e.getMessage(), e);
        }
        catch (IOException e)
        {
            logger.warn(e.getMessage(), e);
        }
        catch (NullPointerException e)
        {
            logger.warn(e.getMessage(), e);
        }
        return result;
    }
    
    /**
     * @throws IOException 
     * @throws ClientProtocolException 
     */
    public String postJson(String url, String action, String jsonData) throws ClientProtocolException, IOException
    {
        HttpPost request = new HttpPost(url + action);
        request.addHeader(USER_AGENT, AGENT);
        request.addHeader("Content-Type", "application/json");
        request.addHeader("Accept-Encoding", "gzip");
        if(cookie != null){
            request.setHeader("Cookie", cookie);
        }
        request.setEntity(new ByteArrayEntity(jsonData.getBytes(ENCODE)));

        String result = null;
        if (proxy != null) {
            result = mClient.execute(proxy, request, new RedirectionResponsehandler(), localContext);
        } else {
            result = mClient.execute(request, new RedirectionResponsehandler(), localContext);
        }
         

        logger.debug("request url and response result::", url + action + "\n"
                + result);
        return result;
    }

    /**
     * 
     * @Description:为请求添加通用参数
     */
    private List<NameValuePair> addBasicParams(List<NameValuePair> olist)
    {
        List<NameValuePair> list = new ArrayList<NameValuePair>();
        if (olist != null)
        {
            list.addAll(olist);
        }
        return list;
    }

    /**
     * 
     * @Description:直接通过url 调用get通用方法,没有缓存
     * @param url外部链接
     */
    public String getWithoutCache(String url, List<NameValuePair> list,
            String action)
    {
        return get(list, url + action, false);
    }

    /**
     * 
     * @Description:直接通过url 调用get通用方法,有缓存
     * @param url外部链接
     */
    public String get(String url, List<NameValuePair> list, String action)
    {
        return get(list, url + action, true);
    }

    /**
     * 
     * @Description:内部系统get通用方法,没有缓存
     */
    public String getWithoutCache(List<NameValuePair> list, String action)
    {
        return get(list, getTempUrl() + action, false);
    }

    /**
     * 
     * @Description:内部系统get通用方法,有缓存
     */
    public String get(List<NameValuePair> list, String action)
    {
        return get(list, getTempUrl() + action, true);
    }

    public String get(String url){
        HttpGet request = new HttpGet(url);
        request.addHeader(USER_AGENT, AGENT);
        String result = "";
        try {
            
            if (cookie != null) {
                request.setHeader("Cookie", cookie);
            }
            
            if (proxy != null) {
                result = mClient.execute(proxy, request, new RedirectionResponsehandler(), localContext);
            } else {
                result = mClient.execute(request, new RedirectionResponsehandler(), localContext);
            }

            
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            logger.warn(e.getMessage(), e);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            logger.warn(e.getMessage(), e);
        }
        
        return result;
    }
    /**
     * 
     * @Description:
     */
    private String get(List<NameValuePair> list, String url, boolean withCache)
    {
        String result = null;
        list = addBasicParams(list);
        
        // 重定向,拼接多个?处理
        if(null != list && list.size() > 0){
        	url = url + "?" + URLEncodedUtils.format(list, ENCODE);
        }
        
        // 重定向时,url路径不全处理(去除ip访问搜索系统pre和环境的情况)
        if(!url.contains(HTTP_STR) && !url.contains("192.168.33.2")){
        	url = HttpMtsPropertiesUtil.getValue("B2C_URL_ROOT") + url;
        }

        if (result != null)
        {
            logger.error("caller get ", "Caller.get [cached]  {}" + url);
            return result;
        }
        else
        {
            HttpGet request = new HttpGet(url);
            // request.addHeader("Accept-Encoding", "gzip");
            request.addHeader(USER_AGENT, AGENT);
            if(cookie != null){
                request.setHeader("Cookie", cookie);
            }
            logger.error("http url {}", request.getURI().toString());
            try
            {
                if (proxy != null) {
                    result = mClient.execute(proxy, request, new RedirectionResponsehandler(), localContext);
                } else {
                    result = mClient.execute(request, new RedirectionResponsehandler(), localContext);
                }
            }
            catch (ClientProtocolException e)
            {
                logger.warn(e.getMessage(), e);
            }
            catch (IOException e)
            {
                logger.warn(e.getMessage(), e);
            }
            catch (NullPointerException e)
            {
                logger.warn(e.getMessage(), e);
            }
        }
        if (result != null)
        {
            logger.error("http result {}", result);
        }

        return result;
    }

    /**
     * 异常自动恢复处理, 使用HttpRequestRetryHandler接口实现请求的异常恢复
     */
    private HttpRequestRetryHandler mRequestRetryHandler = new HttpRequestRetryHandler()
    {
        // 自定义的恢复策略
        public boolean retryRequest(IOException exception, int executionCount,
                HttpContext context)
        {
            // 设置恢复策略,在发生异常时候将自动重试3次
            if (executionCount >= 3)
            {
                // Do not retry if over max retry count
                return false;
            }
            if (exception instanceof NoHttpResponseException)
            {
                // Retry if the server dropped connection on us
                return true;
            }
            if (exception instanceof SSLHandshakeException)
            {
                // Do not retry on SSL handshake exception
                return false;
            }
            HttpRequest request = (HttpRequest) context
                    .getAttribute(ExecutionContext.HTTP_REQUEST);
            boolean idempotent = (request instanceof HttpEntityEnclosingRequest);
            if (!idempotent)
            {
                // Retry if the request is considered idempotent
                return true;
            }
            if (exception != null)
            {
                return true;
            }
            return false;
        }
    };

    /**
     * 使用ResponseHandler接口处理响应,HttpClient使用ResponseHandler会自动管理连接的释放,解决了对连接的释放管理
     */
    private class RedirectionResponsehandler implements ResponseHandler<String>
    {
        @Override
        public String handleResponse(HttpResponse response)
                throws ClientProtocolException, IOException
        {
            HttpUriRequest currentReq = (HttpUriRequest) localContext
                    .getAttribute(ExecutionContext.HTTP_REQUEST);
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
            {
                HttpEntity entity = response.getEntity();
                if (entity != null)
                {
                    Header header = entity.getContentEncoding();
                    if (header != null)
                    {
                        String contentEncoding = header.getValue();
                        if (contentEncoding != null)
                        {
                            if (contentEncoding.contains("gzip"))
                            {
                                entity = new GzipDecompressingEntity(entity);
                            }
                        }
                    }
                    String charset = EntityUtils.getContentCharSet(entity) == null ? ENCODE
                            : EntityUtils.getContentCharSet(entity);
                    Header[] headers = response
                            .getHeaders("passport.login.flag");
                    if (headers.length > 0)
                    {
                        String result = "{\"@code\":\"1\",\"@desc\":\"用户未登录\",\"xml\":{\"@errorCode\":\"common.2.userNotLoggedIn\"}}";
                        return result;
                    }
                    String responseBody = new String(
                            EntityUtils.toByteArray(entity), charset);
                    // 如果需要自动转发
                    Pattern redirPtn = Pattern
                            .compile(
                                    "<meta http-equiv=(?:'|\")refresh(?:'|\").*url=(.*)(?:'|\") />",
                                    Pattern.CASE_INSENSITIVE);
                    Matcher mathcer = redirPtn.matcher(responseBody);
                    while (mathcer.find())
                    {
                        String refreshUrl = mathcer.group(1);
                        if (!refreshUrl.startsWith("http:"))
                        {
                            HttpHost currentHost = (HttpHost) localContext
                                    .getAttribute(ExecutionContext.HTTP_TARGET_HOST);
                            String rdu = (currentReq.getURI().isAbsolute()) ? currentReq
                                    .getURI().toString()
                                    : (currentHost.toURI() + currentReq
                                            .getURI());
                            refreshUrl = String.format("%s%s", rdu, refreshUrl);
                        }
                        if (currentReq.getMethod().equalsIgnoreCase(HTTP_POST))
                        {
                            return post(refreshUrl, null, "");
                        }
                        else if (currentReq.getMethod().equalsIgnoreCase(
                                HTTP_GET))
                        {
                            //切记别改成带缓存的 wujj
                            return getWithoutCache(refreshUrl, null, "");
                        }
                    }
                    return responseBody;
                }
                else
                {
                    return null;
                }
            }
            else if (response.getStatusLine().getStatusCode() == HttpStatus.SC_MOVED_TEMPORARILY
                    || response.getStatusLine().getStatusCode() == HttpStatus.SC_MOVED_PERMANENTLY)
            {
                // 从头中取出转向的地址
                Header locationHeader = response.getLastHeader("location");
                String location = locationHeader.getValue();
                if (null!=currentReq && currentReq.getMethod().equalsIgnoreCase(HTTP_POST))
                {
                    return post(location, null, "");
                }
                else if (null!=currentReq && currentReq.getMethod().equalsIgnoreCase(HTTP_GET))
                {
                    return getWithoutCache(location, null, "");
                }
            }
            else
            {
                return null;
            }
            return null;
        }
    }

    public String getCookie() {
        return cookie;
    }

    public void setCookie(String cookie) {
        this.cookie = cookie;
    }
    
    public void setProxy(String proxyUrl, int port) {
        proxy = new HttpHost(proxyUrl, port);
        mClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    }
    
    
}




鸿蒙开发之hdc命令行 hdc(HarmonyOS Device Connector)是HarmonyOS为开发人员提供的用于调试的命令行工具,通过该工具可以在windows/linux/mac系统上与真实设备进行交互。 阅读详情

相关推荐

经典密码体制(上)

头歌

shannidawang的博客 3086

Java爬虫 httpclient获取网页+jsoup解析网页

System.out.println("响应码:"+response.getStatusLine().getStatusCode());System.out.println("响应码:"+response.getStatusLine().getStatusCode());System.out.println("请求体:"+data.get("data"));System.out.println("请求url:"+data.get("url"));//获取a标签包含的内容获取a标签。////网页的文章内容。

mds0517的博客 1722

自动配胶机的PLC控制系统设计

我们根据自动配胶机的控制需求,编写了相应的PLC程序。PID温度控制算法的实现方面,我们采用了经典的PID控制算法,通过不断调整加热器的功率,实现对胶水混合温度的精确控制。在PLC程序中,我们编写了PID控制算法的程序模块,通过实时采集温度传感器的数据,计算温度偏差和偏差变化率,并根据PID控制算法计算出加热器的功率输出值,实现对温度的精确控制。在系统调试阶段,我们对自动配胶机的各个部分进行了详细的测试和调试,包括气路和液路的开关测试、传感器的精度测试、步进电机的位置和速度测试以及PLC程序的逻辑测试等。

lagougongzuoshi的博客 1226

使用HttpClient获取网页中动态加载的某部分数据,Java实现

缺点是需要人工寻找post请求的url和对应的参数。 参考: 1.为GET和POST请求添加请求参数和请求头(使用HttpClient,Java) 2.关于抓取js加载出来的内容抓取 (参考了该博客的流程,例如找到实际的请求url) 以一篇新闻资讯为例:http://news.cqcoal.com/blank/nc.jsp?mid=98212 1.使用F12,在network中的文件列...

yangc_cong的博客 3101

自动换挡频率计的设计精髓:如何用数字电路优雅地解决量程切换难题

本文深入解析了自动换挡频率计的设计精髓,重点探讨如何利用数字电路优雅解决量程切换难题。通过74系列通用数字集成电路构建智能化的自动量程切换系统,详细介绍了状态检测、决策逻辑和档位执行等核心模块的设计方法,并对比了不同实现方案的优劣,为电子测量领域的工程师提供了实用的硬件设计参考。

weixin_27869497的博客 407

一文看懂英伟达A100、H100、A800、H800、H20

想要Deepseek私有化部署吗?无论是训练大型AI模型,还是进行高性能计算(HPC),还是Deepseek私有化部署,都需要强大的GPU支持。而英伟达(NVIDIA)作为全球领先的AI芯片制造商,推出了一系列高性能GPU,包括等,广泛应用于AI训练、推理、科学计算等领域。如果想搭建一个属于自己的算力中心,该如何选择合适的GPU?本文将带你详细了解这些GPU的特性,并指导你如何搭建算力中心。一、英伟达算力GPU系列解析1. A100:数据中心AI计算的奠基石:Ampere:6912:432。

【可全包】本人程序员,不需要做任何吹嘘,只是实在写点程序,写点文档,熟悉各类主流框架,SSM,SpringBoot,Flask,Djiango,Mysql,Sqlite,VUE,Uniapp等,各类程序设计专家,优质作者 2万+

HttpClient爬取网页

HttpClient 项目结构 ### 配置文件 pom.xml <?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/PO

xiao-啸 779

YOLOv11 损失函数进阶:SlideLoss 让小目标检测精度飙升

创建self.loss_fun = loss_fun # 基础损失函数(如BCEWithLogitsLoss)self.loss_coef = loss_coef # 损失系数# 计算滑动权重:根据预测与真实值的差异判断样本难度# 难度越高,权重越大该类在原有损失函数的基础上,通过diff计算样本预测与真实值的差异(差异越大,样本越难),进而生成动态权重,实现对难样本的重点学习。

m0_64661770的博客 210

网页内容获取工具 HttpClient

HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。其相比于传统 JDK 自带的 URLConnection(下一篇会讲解),增加了易用性和灵活性。其功能主要是用来向服务器发送请求,并返回相关资源。在网络爬虫实战中,经常使...

qq_37969990的博客 2596

射频仿真软件:ADS (Advanced Design System)_(29).ADS脚本编程与自动化

ADS脚本编程为射频设计提供了强大的自动化工具,可以帮助用户实现设计流程的优化、参数扫描和优化、结果分析和报告生成等任务。选择合适的脚本语言(Python、Tcl、AEL)并合理设置ADS环境,可以显著提高设计效率和准确性。通过实际项目中的应用案例,我们可以更好地理解如何利用脚本编程解决复杂的射频设计问题。希望本文对您的ADS脚本编程学习有所帮助。

kkchenjj的博客 2470

《UDS协议从入门到精通》系列——图解0x22:通过ID读数据

如何向车辆ECU通过DID写入数据?有哪些注意事项?图解+示例带你快速上手0x22服务!!

车载系统攻城狮 8710

使用Apache HttpClient爬取网页内容的详细步骤解析与案例示例

通过以上步骤和案例示例,我们可以使用Apache HttpClient来爬取网页内容。Apache HttpClient提供了丰富的功能和配置选项,您可以根据具体的需求和情况进行相应的调整和扩展。希望本文对您了解和使用Apache HttpClient有所帮助,欢迎您根据本文提供的示例代码进行实践和探索。

hitpter的专栏 1248

华为OD机试真题 新系统 2026-04-19 Java&Go 实现【分辨率排序】

华为OD机试真题 新系统 2026-04-19 Python&JS 实现【分辨率排序】

MISAYAONE的博客 303

HttpClient+Jsoup 抓取网页信息

利用HttpClient和Jsoup技术抓取网页信息。HttpClient是支持HTTP协议的客户端编程工具包,并且它支持HTTP协议。 jsoup 是一款基于 Java 平台的 网页html解析器,可直接解析某个 URL 地址、HTML 文本内容,提供了一套非常方便的 API接口,通过类似于 jQuery 的操作方法来操作数据。   httpClient相关文档:http://

花2不谢 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HttpClient(一)HttpClient抓取网页基本信息

一、HttpClient简介   HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,   并且它支持 HTTP 协议最新的版本和建议。   官方站点:http://hc.apache.org/      最新版本4.5http://hc.apache.org/httpc...

a878787877的专栏 229

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

httpclient抓取https网页数据

近日接到一个任务,需要采集某个https网站的部分内容,用到了httpclient(4.5.X),它是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。先看一下httpclient的简单使用。 封装一个httpclient查询方法: public String getHtml(Strin

菜鸟的自我积累 3975

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HttpClient+Jericho HTML Parser 实现网页的抓取

HttpClient+Jericho HTML Parser 实现网页的抓取 Jericho HTML Parser是一个简单而功能强大的Java HTML解析器库,可以分析和处理HTML文档的一部分,包括一些通用的服务器端标签,同时也可以重新生成无法识别的或无效的HTML。它也提供了一个有用的HTML表单分析器。   下载地址:http://sourceforge.net/project/s

chenqi19831112的专栏 1080

HTTPCLIENT抓取网页内容

通过httpclient抓取网页信息。 public class SnippetHtml{ /** * 通过url获取网站html * @param url 网站url */ public String parseHtml (String url) { // 测试HttpClient用法 HttpClient client=new HttpClient(); //

风催草动 1694

httpClient抓取网页并存储mht格式的文件

求高手援助     我已经通过httpClient抓取百度网页的html标签,现在将存储为mht格式 按以下方法 。存储htm格式文件没问题,但是存储mht就不行,该如何解决 江湖救急啊。        //构造HttpClient的实例       HttpClien

wenjiao77的专栏 716

php抓取动态页面内容,httpclient怎么完整抓取php动态加载网页

httpclient如何完整抓取php动态加载网页本人准备用海词的WebAPI接口http://dict.cn/mini.php?q=word写一个本地客服端查词程序用httpclient3.1访问后得到的是:Definebook:[buk]正在加载的翻译解释例句与用法:正在加载的相关例句与用法词形变化:正在加载的词形变化加入生词本看详细解释而我想得到的是从浏览器直接打开的效果:D...

weixin_29065015的博客 297

利用httpclient开源工具抓取网页的源码,并且控制台打印出来工具类的编写

利用httpclient开源工具抓取网页的源码,并且控制台打印出来工具类的编写 package com.pyc.search.crawler.node.tools; import java.io.InputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org

huo_chai_gun的专栏 790

JAVA HttpClient学习笔记(一):GET方法模拟网页登录抓取网页数据

目前正在学习安卓,并开发了一个类似于超级课程表和今日校园的APP,但是一直卡壳在抓取课程表这一步,遍历了很多资料任然无法解决,下定决心系统信息HttpClient,先写一个helloWord,一直持续记录学习! 一、使用org.apache.HttpClient模拟登录网页,并抓取数据,需要用到HttpClient包 import org.apache.http.HttpEntity;...

冷朴承 1448

springBoot通过HttpClient和jsoup进行网页中桌面背景图片抓取下载

java爬虫

可乐的博客 905

HTTPClient抓取网页内容

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33795833的博客 199

HttpClient4.5+Jsoup实现抓取网页

和上篇博客一样,我在学习用httpclient实现网络爬虫时,在网上搜了很多资料,但httpclient版本都是之前的3.1版本或者4.3的版本,我通过自己的学习了解了httpclient4.5,今天在这里我将我自己写的用httpclient+jsoup实现抓取网页分享给大家。

csdn_wzg的博客 705

网页爬虫,HttpClient+Jericho HTML Parser 实现网页的抓取

  Jericho HTML Parser是一个简单而功能强大的Java HTML解析器库,可以分析和处理HTML文档的一部分,包括一些通用的服务器端标签,同时也可以重新生成无法识别的或无效的HTML。它也提供了一个有用的HTML表单分析器。  下载地址:http://sourceforge.net/project/showfiles.php?group_id=101067  HttpClient

oscar999的专栏 4600
上一篇: java 序列化.Serializable
下一篇: springmvc+jpa+hibernate 报错
_hug
博客等级 码龄17年 24粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值