PHP 以间隔从 url 抓取和下载文件

Posted

技术标签:

【中文标题】PHP 以间隔从 url 抓取和下载文件【英文标题】:PHP Scrape and download files from urls with interval 【发布时间】:2016-01-22 15:12:18 【问题描述】:

我已经构建了一个抓取工具来从另一个网站获取一些数据。刮板当前在屏幕的命令行中运行,因此该过程永远不会停止。在每个请求之间,我设置了一个间隔以保持冷静。在一次抓取中,可能会有 100 个文件需要下载。而且这个过程在每次下载后都有一个时间间隔。

现在我想在后端添加功能以即时抓取。一切正常,我得到了第一个只有 2 个请求的数据集。在返回的数据中,我有一个需要下载文件的数组(可以是 10 可以是 +100)。我想创建一些用户可以实时查看下载过程的内容。

我面临的事情是,当刮板在浏览器窗口中有 2 项工作要做时,最多可以下载 +20 次下载,包括保持稳定的时间间隔,这将花费太多时间。我正在考虑将需要下载的文件保存到数据库表中,并通过另一个 shell 脚本(屏幕)或 cronjob 处理这部分数据处理。

我想知道我的想法是否是好的、过度的,或者有一些更好的例子来处理这些过程。

感谢您的建议。

附言我正在使用 php 开发

【问题讨论】:

我真的不需要尝试,我知道它会起作用,但我的问题是,以这种方式处理这些事情的方式是否明智,或者我应该以另一种方式处理它 【参考方案1】:

如果您认为这太过分了,您可以运行脚本并等待该任务完成后再运行。

【讨论】:

【参考方案2】:

基本上,您需要实现message queue,其中 http 请求处理程序(前端控制器?)发出一条消息以获取页面,一个或多个工作人员完成这项工作,可选择向队列发送更多消息以下载文件。

有很多 MQ 代理,但您可以使用数据库作为队列存储来实现自己的。

【讨论】:

Coo,我想这个逻辑和我的想法一样;)谢谢 很高兴知道它有帮助。附带说明一下,您可能希望 supervisord.org “妖魔化”您的工作人员,而不是让他们在分离的屏幕会话中运行。

以上是关于PHP 以间隔从 url 抓取和下载文件的主要内容,如果未能解决你的问题,请参考以下文章

php如何通过URL批量下载图片,这些图片是设计作品,

使用 Alamofire 从 url 下载后确定文件类型

从 Tableau 地图中抓取数据

Python抓取远程文件获取真实文件名

python 下载抓取网址列表并写入文件“urls.txt”

PHP 从URL下载文件