Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在1-2秒内同时建立50+ URLConnections

在1-2秒内同时建立50+ URLConnections
EN

Stack Overflow用户
提问于 2020-04-24 20:27:40
回答 1查看 71关注 0票数 0

我试图从50+动态网页中抓取实时数据,并需要每1-2秒更新一次数据。为此,我每隔1/2秒就安排一个计时器,该计时器遍历以下方法50次(针对50个URL):

代码语言:javascript
运行
AI代码解释
复制
public double fetchData(String link) {
        String data = null;
        try {
            URL url = new URL();
            urlConn = url.openConnection(link);
            InputStreamReader inStream = new InputStreamReader(urlConn.getInputStream());
            BufferedReader buff = new BufferedReader(inStream);

            /*code that scrapes webpage, stores value in "data"*/
            inStream.close();
            buff.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
        return data;
}  

此方法可以工作,但每个URL大约需要一秒钟,或总计50秒。我还尝试过JSoup,希望可以使用以下代码克服延迟:

代码语言:javascript
运行
AI代码解释
复制
public double fetchData(String link, String identifier) {
        Document doc;
        String data = null;
        try {
            doc = Jsoup.connect(link).timeout(10*1000).get();
            data = doc.getElementById(identifier).parent().child(0).text();
        } catch (IOException e) {
            e.printStackTrace();
        } 
return data;
}

但却遇到了大致相同的处理时间。是否有更快的方法同时从动态网页中提取数据,无论是通过URLConnection、JSoup还是其他方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 23:02:49

简单的回答是“使用线程”。为要重复刮取的每个50+ URL创建一个线程。

如果您使用URLConnection、JSoup或其他方式进行抓取,这很可能不会有什么不同。实际的瓶颈可能是由于:

bandwidth

  • network

  • 负载和从

  • 网络中获取的服务器上的负载性能

第一个是你无法控制的(以积极的方式!)最后两个..。你也许能解决这个问题,但只能把钱花在这个问题上。例如,您可以支付一个更好的网络连接/路径,或支付替代主机移动您的刮刀接近您想要刮的网站。

切换到多线程抓取将改善其中的一些瓶颈,但不能消除它们。

但我不认为你做的是个好主意。

如果你写的东西每1或2秒重复重复擦拭相同的页面,他们会注意到的。他们会采取措施阻止你。很难处理的步骤。比如:

限制您的requests

  • blocking、IP或IP range

  • sending的
  • 速率限制您“停止并停止”的信件

如果这没有帮助的话,也许更严重的事情。

真正的解决方案可能是以更有效的方式获取信息;例如,通过API。这可能也要花你的钱。因为(当它归结为它)你的刮擦将花费他们的钱或者没有回报.或者,如果你的活动最终减少了人们对他们网站的点击量,你就会得到负面的回报。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61420974

复制
相关文章
推荐|50+有用的Kubernetes工具
在短短两年的时间里,Kubernetes在集装箱管道战场上给其竞争对手带来了浪费。令人遗憾的是,Docker Swarm自2016年以来并未成为主要的竞争者,并且像AWS一样,承诺通过承诺K8的支持和整合而失败。
February
2018/11/21
3.2K0
1-2 CCNA
物理介质:网线、光纤、网卡接口 ---- 568B:橙白、橙、绿白、蓝、蓝白、绿、棕白、棕 一般网线中,只有1236传输数据 ---- 交叉线:连接同类型设备 直通线:连接不同类型的设备 现在主流都是568B-568B ---- 自动翻转: 打破交叉线,直通线 连接设备类型的限制 现在的网络设备,包括网卡都支持 ---- POE 使用网线中的 4578线,为设备进行供电,比如AP,网络摄像头 免去这种网络设备需要连接电源的烦恼 必须两端设置都支持POE技术 ---- 光纤:使用玻璃纤维作为传输介质 单
运维小白
2018/03/29
9100
1-2 CCNA
Tomcat 服务器 在45秒内未启动成功
Tomcat 服务器 在45秒内未启动成功 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <servers>   <server aut
星哥玩云
2022/07/03
1.7K0
如何用LogQL在几秒内查询TB级的日志
LogQL在很大程度上受Prometheus的PromQL启发。但是,当涉及到在过滤海量日志时,我们就像面临在大海捞针一样复杂。LogQL是Loki特有的语句,在本文中,我们将提供LogQL的快速过滤器查询技巧,这些查询可以在几秒钟内过滤掉数TB的数据。
云原生小白
2021/05/13
8740
如何用LogQL在几秒内查询TB级的日志
在DDD中建立领域模型
在前文《当我们谈论DDD时我们在谈论什么》中我们讨论了DDD的战略设计和战术设计。在本文中我们将继续探讨领域模型。
ThoughtWorks
2023/04/28
9190
在DDD中建立领域模型
50+ 个有用的 Docker 工具
Kubernetes是市场上最实用的最受欢迎的容器编排引擎。最初作为一个Google项目开始,成千上万的团队使用它来部署生产中的容器。谷歌声称它每周使用Kubernetes运行数十亿个容器。
Java帮帮
2019/06/19
1.6K0
50+ 个有用的 Docker 工具
用HEXO在Github建立个人博客
在sublime打开新建的~/zhaoolee-blog/source/_posts/在Github创建个人专属名片.md, 并加入内容
zhaoolee
2018/08/02
5460
用HEXO在Github建立个人博客
50+个超实用的DevOps工具
DevOps的概念由开发和运维所组成,是包括了软件开发管理和团队管理的集合体。这个单词2009年被首次提出来,并自此成为IT领域的流行语。
运维部落
2021/01/27
1.5K0
50+个超实用的DevOps工具
10秒内xd画虚线
Experience Design画虚线 adobe的Experience Design还是跟apple的sketch有很大的差距的,无奈没有mac XD目前没有提供这样的功能 不过仍有办法 用圆点来拼凑
2021/11/08
1.8K0
如何用LogQL在几秒内快速查询TB级的日志
LogQL在很大程度上受Prometheus的PromQL启发。但是,当涉及到在过滤海量日志时,我们就像面临在大海捞针一样复杂。LogQL是Loki特有的语句,在本文中,我们将提供LogQL的快速过滤器查询技巧,这些查询可以在几秒钟内过滤掉数TB的数据。
云原生小白
2021/01/08
2.1K0
如何用LogQL在几秒内快速查询TB级的日志
在AWS中建立网络分割案例
网络分割最简单的示例是使用防火墙分离应用程序和基础结构组件。这个概念现在是构建数据中心和应用程序架构中提出的。但如果没有合适的网络分割模型,几乎不可能找到企业案例。
FB客服
2019/10/15
1.6K0
【推荐】50+有用的Docker工具
容器生态系统比以往任何时候都增长和扩展得更快,而且有了这么多的Docker工具和服务,只要了解可用的选项,就会觉得这是一项艰巨的任务。无论你是初学者还是专家、开发人员或DevOps工程师、SRE或平台架构师,此列表都将是你理解最流行的产品以增强你与Docker开发每个阶段的指南。
liuxuewen
2018/09/20
5.9K0
【推荐】50+有用的Docker工具
如何消化每天 150 亿条日志,让大查询保持在 1 秒内
该数据仓库用例与规模有关。用户是中国联通,全球最大的电信服务提供商之一。使用 Apache Doris 在数十台机器上部署多个 PB 级集群,以支持 30 多个业务线每日添加的 150 亿条日志。如此庞大的日志分析系统是网络安全管理的一部分。出于实时监控、威胁追踪和警报的需求,用户需要一个能够自动收集、存储、分析和可视化日志和事件记录的日志分析系统。
大数据杂货铺
2023/09/28
7690
如何消化每天 150 亿条日志,让大查询保持在 1 秒内
服务 50+ 业务线,Apache Pulsar 在科大讯飞 SRE 的探索与实践
本文整理自 8 月 Apache Pulsar Meetup 上的分享。科大讯飞是中国最大的智能语音技术提供商,在中文语音合成、语音识别、口语评测等多项技术上拥有国际领先的成果。2022 年 3 月,科大讯飞正式将 Pulsar 上线。本文将介绍经历一年多的测试与评估,科大讯飞为何选择 Pulsar;如何利用 SRE 保障体系将 Pulsar 从 0 到 1 落地;内部的监控与参数优化与 Pulsar 使用过程中可能出现的一系列问题及相应的解决方案。
深度学习与Python
2022/11/28
5200
服务 50+ 业务线,Apache Pulsar 在科大讯飞 SRE 的探索与实践
在MV上建立触发器实验
-- 建立MV测试表 CREATE TABLE tbl1 ( a NUMBER, b VARCHAR2 (20) ); CREATE UNIQUE INDEX tbl1_pk ON tbl1 (a); ALTER TABLE tbl1 ADD (CONSTRAINT tbl1_pl PRIMARY KEY(a)); -- 建立MV日志,单一表聚合视图的快速刷新需要指定including new values子句 CREATE MA
用户1148526
2019/05/25
4810
在AIX建立开机自动运行脚本
.        run-level 2 May 20 11:35      2    0    S
星哥玩云
2022/07/01
1.3K0
在Android Studio环境下建立UiAutomator环境
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
2.3K0
在Android Studio环境下建立UiAutomator环境
exlipse同时操作多行。比如同时在多行同列输入相同的文字
先选择要操作的行,在同时按shift+alt+a,会将所选中的文字括起来,鼠标会变成十字图标,按住鼠标左键,在相应输入文字的位置上下拖动,会出现一个竖杠,此时即可开始输入文字了,并且所选中行都有哦,是不是很神奇。
全栈程序员站长
2022/06/30
9440
exlipse同时操作多行。比如同时在多行同列输入相同的文字
1-2 云商城架构设计
  云商城采用了当前主流的微服务技术架构,微服务技术栈采用了当前主流的SpringCloud Alibaba技术栈,从接入层、网关层、服务层、数据同步、服务治理、数据处理、第三方接口多个方面进行了精心设计,技术经过了多次挑选、优中选优,最终打造了一套全网最优质的的微服务商城架构体系,解决了大型微服务电商应用中绝大多数难点、痛点问题。
用户4919348
2021/01/13
1.2K0
1-2  云商城架构设计
在linux中同时探测多台主机是否存活
我们都知道PING可以验证主机是否能够通过网络与另一台计算机或网络设备进行通信。使用 Ping 命令,我们可以向目标主机发送 ICMP Echo 请求,并测试目标主机是否存活。我们可以在 LAN 和 WAN 中 ping 系统。 下面给出了 ping 命令的典型用法。 要ping IP 地址 $ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=53.666
入门笔记
2022/06/02
1.3K0

相似问题

安卓多URLConnections

10

将新文件上传到OneDrive后,LastModifiedDateTime在1-2秒内自动更改

121

同时检测值在4秒内的变化

15

在Laravel中同时建立种子关系

126

同时建立多个TCP连接

36
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档