返回URL首个结果

爬虫——隐藏的url获取教学 要爬取信息,最关键的是获取一个正确的url,有时候我们在F12看到的请求是不完整的,是掩盖了真实的url后的结果,所以我们一直找不到所需的url,那么如何获取真正的所需url,下面就拿某猪的搜索来做介绍 先打开某猪网站的首页 我们想要爬取旅游的信息,那就要通过搜索各个地点,查看其中的月售 通过月售信息来判断这个景点在一段时间内的热度 那么用爬虫的第一步是什么: 获取ur... 阅读详情

之前遇到一个需求,是需要请求区块链上面的block数据,进行数据解析然后入库存储,因为block产生一定时间后的数据都是固定的,链接不止一个,但返回的结果都是一样的,我只需要拿到首个返回的结果就好了,如果你也类似的场景,这篇文章或许能给你到参考

工具类

package com.yianjia.common.utils;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiConsumer;

/**
 * @author z
 */
@Component
public class FastFirstRequestUtils {

    private static final Logger logger = LoggerFactory.getLogger(FastFirstRequestUtils.class);

    private List<String> urlList = Arrays.asList(
            "https://www.baidu.com",
            "https://www.baidu.com",
            "https://www.baidu.com",
            "https://www.baidu.com",
            "https://www.baidu.com"
    );

    private static ExecutorService executorService = new ThreadPoolExecutor(0, 128, 0L, TimeUnit.SECONDS, new SynchronousQueue<>(), (new ThreadFactoryBuilder()).setNameFormat("get_url-1-%d").build());

    @Autowired
    private RestTemplateUtils restTemplateUtils;

    @PostConstruct
    public void run() {
        CompletableFuture[] futures = this.urlList.stream().map((url) -> CompletableFuture.supplyAsync(() -> {
            // 替换成你自己的请求
            String getBlockResult = this.restTemplateUtils.exchange(url, HttpMethod.POST, null, null, null, String.class);
            return getBlockResult;
        }, executorService).exceptionally((e) -> null)).toArray((size) -> new CompletableFuture[size]);

        // n 为完成数,只要完成数达到,就会返回结果集,不会阻塞
        CompletableFuture completableFuture = firstSuccessful(Arrays.asList(futures), 1);
        List<String> resultList = null;
        try {
            resultList = (List) completableFuture.get(5L, TimeUnit.SECONDS);
        } catch (InterruptedException interruptedException) {
            interruptedException.printStackTrace();
        } catch (ExecutionException executionException) {
            executionException.printStackTrace();
        } catch (TimeoutException timeoutException) {
            timeoutException.printStackTrace();
        }
        if (null != resultList && 0 != resultList.size()) {
            System.out.println("-------------------结果出来啦-------------------");
            System.out.println(resultList.get(0));
            System.out.println("-------------------结果出来啦-------------------");
        }
    }

    /**
     * @param list 任务集
     * @param n    需要完成的任务数
     * @param <T>
     * @return
     */
    private static <T> CompletableFuture<List<T>> firstSuccessful(List<CompletableFuture<T>> list, int n) {
        int maxFail = list.size() - n;
        if (maxFail < 0 || n <= 0) {
            throw new IllegalArgumentException();
        }

        AtomicInteger counter = new AtomicInteger(1);
        AtomicInteger fails = new AtomicInteger(0);
        List<T> rList = new ArrayList(n);
        CompletableFuture<List<T>> result = new CompletableFuture();

        BiConsumer<T, Throwable> c = (value, failure) -> {
            if (n != rList.size()) {
                if (failure != null) {
                    if (fails.incrementAndGet() > maxFail) {
                        result.completeExceptionally(failure);
                    }
                } else if (!result.isDone()) {
                    boolean commit = false;
                    synchronized (rList) {
                        if (null != value) {
                            commit = rList.size() < n && rList.add(value) && rList.size() == n;
                        }
                    }
                    if (commit) {
                        result.complete(Collections.unmodifiableList(rList));
                        return;
                    }
                }
                if (counter.get() == list.size()) {
                    result.complete(Collections.unmodifiableList(rList));
                } else {
                    counter.incrementAndGet();
                }
            }
        };

        for (CompletableFuture<T> tCompletableFuture : list) {
            CompletableFuture f = tCompletableFuture;
            f.whenComplete(c);
        }
        return result;
    }
}

结果演示

可以看到还没有请求完,其实结果就已经返回来了

 

从浏览器输入URL之后HTTP请求到返回结果的完整过程 从浏览器输入URL之后HTTP请求到返回结果的完整过程 1.如下图: 2.过程解析: (1).浏览器输入URL 跳转 之后 浏览器 会先判断 这个 链接(URL)是否 需要 重定向(Redirect),需要就会跳转到 重定向页面,不需要的话就进入下一步。 (2).判断是否需要重定向之后 浏览器会判断 这个 访问的 链接 是否 有缓存(之前访问过)。有缓存 直接 从 缓存 取数据,没有缓存... 阅读详情

相关推荐

JavaScript - 去掉(删除)URL 路径上指定的参数(传递一个 URL 和要删除的参数名,返回结果)

js去掉URL路径上指定参数,js删除url指定参数,js删除url指定参数,关于使用JS去除URL中的指定参数问题,js对url进行某个参数,关于使用JS去除URL中的指定参数问题,js对url进行某个参数,最简单的方法:JS去除url中某个参数,JS去掉浏览器中url参数,js删除url中的某个参数_js删除url参数_js获取url的某个参,关于使用JS去除URL中的指定参数问题,js对url进行某个参数,js获取链接去掉参数,JS获取url中的参数修改url参数移除url参数,

🏆 前端领域优质创作者 4212

java 异步 返回值_java 异步

注:本文基于 jdk1.81. 异步不需要返回值;CompletableFuture.runAsync()示例代码如下:public JsonResult test() {JsonResult result = new JsonResult();CompletableFuture.runAsync(() -> {// 准备请求JsonResult postResult = appTool.p...

weixin_35864328的博客 5333

文档信息抽取技术:从非结构化文本到结构化信息的旅程

文档信息抽取技术是一种将非结构化文本转化为结构化信息的技术。这种技术可以从各类文档中自动提取出如实体、关系和其他重要信息,并将它们转化为方便计算机进一步处理和分析的格式。

INTSIG的博客 979

请求一个url 获得返回结果(doPost doGet方式)

public static String post(String urlStr, Map map) {         if (urlStr == null || map == null || map.size() == 0) {             return null;         }         try {             StringBuffer urt =

cheneystudy的专栏 7184

别再手动配IP了!保姆级教程:用Cisco Packet Tracer搞定DHCP服务器配置(附实验抓包分析)

本文提供了一份详细的Cisco Packet Tracer DHCP服务器配置教程,帮助用户告别手动分配IP的繁琐过程。通过构建多子网实验环境,逐步指导DHCP地址池设置、客户端测试及协议分析,并分享常见问题排查技巧,让网络配置更高效、更智能。

weixin_42535461的博客 336

【STK】手把手教你利用STK进行进行光电红外仿真02-STK/EOIR模块属性之一 传感器选项设置

EOIR传感器可以从空间几何属性、光谱属性、光学属性、辐射属性四个方面进行设置,并且可以设置信号传播路径中的大气特性,包括大气模型、气溶胶模型、气象学可见性和大气湿度。在定义EOIR传感器时,需要Sensor——Definition属性页中,将Sensor Type设置为EOIR。单击下面的按钮打开传感器的EOIR配置页,可以对传感器的属性进行配置,此外,还可以在场景中视情况添加相关的中心体。路径辐射损耗影响上述特性的计算,计算的结果考虑了传感器、目标位置的影响,但是还没考虑地球临边背景的影响。

weixin_44184852的博客 3199

后端给前端统一返回结果

一 统一返回数据格式 项目中我们会将响应封装成json返回给前端,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。 一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容。 例如,我们的系统要求返回的基本数据格式如下: 1 列表 { "success": true, "code": 20000, "message": "成

实践求真知 1万+

基于uniapp开发PDA扫码枪APP:实现RFID批量扫描读取功能

基于uniapp的PDA扫码枪APP开发实战,实现高效RFID读取功能,uniapp整合PDA硬件的实践分享,基于uniapp的PDA端RFID批量扫描方案开发

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

java 获取url返回结果中的Cookie

获取URL返回结果中的Cookie是一个常见的需求,可以通过Java中的URLConnection类来实现。下面是一个示例代码,可以将URL返回结果中的Cookie写入到一个文件中。在运行代码之前,需要确保可以访问到指定的URL,并且返回结果中包含Cookie。通过设置请求方法为GET,可以发送GET请求到指定的URL。方法可以获取返回结果中的Cookie。上述代码中,首先创建一个URL对象,然后使用。的文件,其中包含了返回结果中的Cookie。将Cookie写入到文件中。

qq_31532979的贺公子之数据科学与艺术博客,致力于科技向善,拥抱开源,要用技术的影响力来领导团队,而不是威权和职位! 887

ESD防护设计宝典(十一):CE(传导发射)超标问题排查与解决

(Conducted Emission, CE),亦称为传导骚扰,是电子电气设备或系统内部的电压、电流通过信号线、电源线或地线向外传输,对其他电子电气设备或系统造成电磁干扰的物理现象。其。

m0_56451176的博客 855

YOLOv11的物理信息神经网络(PINN):引入物理规律约束目标运动预测

本文介绍了YOLOv11目标检测与PINN物理信息神经网络的融合技术。YOLOv11采用增强特征提取和参数优化架构,在保持实时性的同时提升检测精度。PINN通过将物理方程嵌入损失函数,实现数据高效学习。两者的结合可显著提升运动预测准确性和遮挡处理鲁棒性。文章详细阐述了环境配置、YOLOv11模型验证方法,并提供了基础PINN框架代码实现,展示了物理约束如何通过自动微分整合到神经网络中。该融合技术适用于自动驾驶、无人机导航等需要物理规律建模的视觉感知场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 422

基于python3的一次简单的请求url接口返回json类型结果实例。

#-*- coding: UTF-8 -* from urllib import request import json import requests import os #获取每一页数据 def get_result_page(url): header = {'Accept-Charset': 'UTF-8', 'Accept': 'application/...

mingming20547的博客 976

Open3D(C++) 基于RANSAC和TLS的点云平面拟合

针对点云平面拟合过程中出现的异常值及误差的问题,提出一种将随机采样一致算法(RANSAC)与整体最小二乘法(TLS)相结合的点云平面拟合方法。利用随机采样一致算法剔除异常值,利用整体最小二乘法对剩余有效点进行平面拟合,计算模型参数。实验结果表明,该方法与传统的特征值法、最小二乘法相比,能提高参数的估算精度,更适合对含有不同异常值及误差的点云数据进行拟合,是一种稳健的平面拟合方法。

点云侠的博客 431

从URL输入到请求结果返回的过程

深入讨论输入URL到请求结果的过程 问:浏览器地址栏输入URL后到请求完成浏览器发生了什么? 答:浏览器先进行DNS解析,根据dns系统查找IP地址,解析出IP地址,发起请求建立TCP链接,请求HTML文件资源 深入: 那么问什么URL需要解析(编码)? 因为网络标准中规定了URL只能是字母和数字以及一些特殊字符(~.?&*;/()%$#@![])组成,如果不做解析转义在一些特殊情况下可能会出现歧义,比如我向一个网站请求,后面携带参数:http:www.baidu.com?test=value

将心_的博客 551

Vue3 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码)

vue3,nuxt3,海康威视,海康监控,摄像头监控,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue3对接海康监控设备,无法连接,报错,vue3对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue3,海康,vue海康视频监控,

🏆 前端领域优质创作者 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

loadrunner中如何读取接口返回结果

脚本开发过程中,多个接口直接可能会存在结果依赖关系,需要记录前一个接口的返回结果,在VU中,可以如下解决: 1、接口访问前配置变量及范围 根据左右边界截取整个返回值,并且将返回值存在变量result1中,用于后续使用。 web_reg_save_param("result1", "LB=", "RB=", "Search=Body", LAST); 2、访问接口 ...

打屁屁的小痘痘 3828

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java获取url返回值_java发送URL请求获取返回值

第一种方法:import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncode...

weixin_42360972的博客 962

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

网络请求:从浏览器输入URL之后HTTP请求到返回结果的完整过程

从浏览器输入URL之后HTTP请求到返回结果的完整过程 1.如下图: 2.过程解析: (1).浏览器输入URL 跳转 之后 浏览器 会先判断 这个 链接(URL)是否 需要 重定向(Redirect),需要就会跳转到 重定向页面,不需要的话就进入下一步。 (2).判断是否需要重定向之后 浏览器会判断 这个 访问的 链接 是否 有缓存(之前访问过)。有缓存 直接 从 缓存 取数据,没有缓存则 进入...

laurel_y的博客 2033

python获取url返回值_python获取url的返回信息方法

如下所示:#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport sysimport urllibimport urllib2import string#########start 获取url的返回信息############def jwkj_url_postget(url,vlaues):data = urllib.urlencod...

weixin_39859988的博客 2845

通过HTTP方式获取URL返回结果数据(Java)

package com.jd.testjsf; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Created by chao on 2016/1/15. */ public class

daydayupzzc的专栏 2225

Spring通过AOP拦截获取请求URL 参数 返回结果

1.AOP拦截器: package com.longjin.comm.utils; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.asp

weixin_39643007的博客 6363

"返回"——查询结果后插入修改完成返回原查询结果页面

前言:在做查管凭证的过程中,需要查询结果后插入修改完成返回原查询结果页面。之前都是使用ajax调用的,但是继承过来的代码不是静态显示的,而是在js中动态拼接的,所以ajax“失效”了,因此...... 1.插入:当从查询页面跳转到插入页面的时候再url路径中加入status标识符进行区别 //插入功能 function insertBtn(date,pz_num){

令狐姑娘 998

浏览器输入URL到返回结果完整过程

当你在浏览器中输入一个URL并按下回车后,浏览器会经历一系列步骤来加载并显示网页。

salmonwilliam的博客 1014

后端 给前端返回图片url_接口返回的是一个图片文件而不是url 前端如何显示?...

请求后端接口 返回的时一张图片 如何在img中显示?preview里查看就是显示一张图片console.log(img):.]用blob createObjectURL转换成地址后前端img还是访问不到的效果结果代码this._http.doGet(this, 'createQRCode', {id: this.lessonId}, (res) => {var img = document....

weixin_39752880的博客 6718

springboot模拟http发送url请求并处理返回结果的三种方法

RestTemplate方式 1.引入RestTemplate, import org.springframework.web.client.RestTemplate; 1.直接拼接url. import net.sf.json.JSONArray; import net.sf.json.JSONObject; public List<String> getHarborImageN...

yuanyaunlv的博客 2987

后端返回URL,前端如何实现下载

实现文件下载功能时后端返回了url,你该怎么处理呢?进来看看吧,或许你能得到灵感哦~

weixin_46268888的博客 1万+
上一篇: leetcode-第299题-猜数字游戏
下一篇: java socketIo 搭建 聊天服务
97牛肉面
博客等级 码龄9年 54粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值