一次收集多个网站的数据
Posted
技术标签:
【中文标题】一次收集多个网站的数据【英文标题】:Colect data for multiples websites at once 【发布时间】:2021-11-26 18:52:54 【问题描述】:有没有一种方法可以一次收集 15000 个不同 url 的信息?
例如:
我有网站https://example.com/50,我想收集信息 3 特定跨度 id(每个网站都一样) 我想要的值是 data-price
的值<span id="lowest-1" data-price="800">800</span>
<span id="lowest-2" data-price="900">900</span>
<span id="lowest-3" data-price="700">700</span>
我想收集https://example.com/1到https://example.com/15000的数据
注意: 我无权访问数据库,只有网页
【问题讨论】:
“一次”(标准)是什么意思 php 对多线程没有任何意义,因此您必须一个接一个地发出请求。但我确定你可以使用一种允许异步调用的语言 不需要一次,而是像在 5 到 15 分钟的空间内收集 15000 个不同 url 的 15000 个值并在 3 小时后再次重复 问题是加载所有带有图像的网页,一切都会使用大量资源。我只想加载所需的信息 【参考方案1】:好的,有两个问题:
第一:PHP不能一次建立15000个连接,必须一个一个来做 秒:从远程网站获取内容需要相同的时间,通常是半秒粗略计算:您需要 7500 秒(2 小时)。
强制 PHP 执行这么长时间是个坏主意。
将链接数组拆分为块,例如块中的 30 个链接, 并使用 CRON 系统定期执行您的工作脚本以获取数据。 替代方法可以是对您的工作人员进行 AJAX 调用,当它收到响应时,javascript 会自动触发下一次 AJAX 调用,但您需要保持浏览器打开。
Worker 会将收集到的数据存储到数据库中,您的前端会从该表中读取数据。 Worker 独立于前端工作,因此前端不知道 Worker 在执行循环中的位置,它只显示最后已知的数据。
这是网络爬虫(蜘蛛)的工作方式。
您是这 1500 个网站的所有者吗?如果你不是,你可以在那里建立一些快速访问的端点来收集数据(RSS、REST、..)。这可以显着减少抓取时间。
【讨论】:
我不是该网站的所有者。这听起来不是最简单的方法,我无法加载整页来收集一点信息。除了 PHP 还有其他方法吗? 使用 PHP,您可以轻松检索页面的 html,无需图像和脚本。但是,是的,整页。没有办法只获取页面的一部分。 用BeautifulSoup库用python好不好?以上是关于一次收集多个网站的数据的主要内容,如果未能解决你的问题,请参考以下文章