托管爬虫的最佳解决方案? [关闭]

2024-03-17

我有一个爬虫,可以爬行几个不同的域以获取新帖子/内容。内容总量数十万页,并且每天都有大量新内容添加。因此,为了能够爬行所有这些内容,我需要我的爬虫程序 24/7 进行爬行。

目前,我将爬网程序脚本托管在与爬网程序添加内容的网站相同的服务器上,并且我只能运行 cronjob 在夜间运行脚本,因为当我这样做时,网站基本上会停止工作,因为脚本的负载。换句话说,这是一个非常蹩脚的解决方案。

所以基本上我想知道这种解决方案的最佳选择是什么?

  • 是否可以继续从同一主机运行爬虫,但以某种方式平衡负载,以便脚本不会杀死网站?

  • 我需要什么样的主机/服务器来托管爬虫?除了普通的虚拟主机之外,我还需要其他规格吗?

  • 爬虫保存它爬取的图像。如果我将爬网程序托管在辅助服务器上,如何将图像保存在网站的服务器上?我想我不想在我的上传文件夹上使用 CHMOD 777 并允许任何人将文件放在我的服务器上。


我决定选择 Amazon Web Services 来托管我的爬虫,它们既有用于队列的 SQS,也有自动可扩展实例。它还有 S3,我可以在其中存储所有图像。

我还决定将整个爬虫程序重写为 Python 而不是 PHP,以便更轻松地利用队列等功能并保持应用程序 100% 运行,而不是使用 cronjobs。

那么我做了什么,这意味着什么

  1. 我为我的爬网程序设置了一个 Elastic Beanstalk 应用程序,该应用程序设置为“Worker”并侦听 SQS,其中存储了需要爬网的所有域。 SQS 是一个“队列”,我可以在其中保存需要爬行的每个域,爬虫将侦听队列并一次获取一个域,直到队列完成。不需要“cronjobs”或类似的东西,一旦队列将数据放入其中,它就会将其发送给爬虫。这意味着爬虫程序 100% 的时间(24/7)都处于运行状态。

  2. 应用程序设置为自动缩放,这意味着当队列中有太多域时,它将设置第二个、第三个、第四个等......实例/爬虫以加快该过程。我认为这对于任何想要建立爬虫的人来说都是非常非常非常重要的一点。

  3. 所有图像都保存在 S3 实例上。这意味着图像不会保存在爬虫的服务器上,并且可以轻松获取和使用。

结果非常好。当我有一个 PHP 爬虫每 15 分钟在 cronjobs 上运行一次时,我每小时可以爬行大约 600 个 URL。现在,我每小时可以毫无问题地抓取 10'000 多个网址,甚至更多取决于我设置自动缩放的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

托管爬虫的最佳解决方案? [关闭] 的相关文章

  • 如何利用磁盘 IO 队列

    我需要从 3 7 GB 文件中读取小数据序列 我需要阅读的职位是不相邻 但我可以命令 IO 以便从头到尾读取文件 该文件存储在 iSCSI SAN 上 该 SAN 应该能够处理 优化排队 IO 问题是 如何一次性请求我需要的所有数据 位置
  • CSS:它渲染“ul > li”比“ul li”更快吗?

    正如我从少数人那里听说的那样 使用 gt 而不是 使渲染速度更快 slide hover gt div gt span border color c8c8c8 OR slide hover div span border color c8c
  • 高性能 C# 服务器套接字的提示/技术

    我有一个 NET 2 0 服务器似乎遇到了扩展问题 可能是由于套接字处理代码的设计不佳 我正在寻找有关如何重新设计它以提高性能的指导 使用场景 50 150 个客户端 每个客户端以高速率 高达 100 秒 秒 发送小消息 每条 10 字节
  • 在未排序的整数列表中最优搜索 k 个最小值

    我刚刚接受采访时提出了一个问题 我很好奇答案应该是什么 问题本质上是 假设您有一个包含 n 个整数的未排序列表 您如何找到此列表中的 k 个最小值 也就是说 如果您有一个 10 11 24 12 13 列表并且正在寻找 2 个最小值 您将得
  • 在 R 中替换数据帧中最低列表值的最有效方法

    我有一个数据框 df 其中包含为每个受试者记录的数字列表 向量 用于测试项目的两次重复 subj item rep vec s1 1 1 2 1 4 5 8 4 7 s1 1 2 1 1 3 4 7 5 3 s1 2 1 6 5 4 1 2
  • 就性能而言,在页面上显示 1000 张图像的最佳方法是什么?

    我试图在一个页面上显示 1000 个相当小的图像 确实很多 但超出了我的控制范围 当一次性加载所有图像时 一次渲染 1000 张图像 性能显然会受到严重影响 我尝试在滚动时应用图像 src 大量 250px 滚动 25 个图像加载等 然后尝
  • 给定两个(大)点集,我如何有效地找到彼此最接近的点对?

    我需要解决一个计算问题 该问题归结为搜索两个集合之间最接近的点对 问题是这样的 给定欧几里德空间中的一组点 A 和一组点 B 找到所有对 a b 使得 b 是 B 中与 a 最近的点 a 是 A 中与 b 最近的点 集合 A 和 B 的大小
  • 如果我将一个大函数声明为内联函数怎么办?

    我搜索了一些相关问题 例如C 中内联函数的好处 https stackoverflow com questions 145838 benefits of inline functions in c 但我还有疑问 如果内联函数只是为了 为编译
  • JMeter:tearDown Thread Group的目的是什么

    我想了解JMeter中tearDown Thread Group的实际用法 在什么场景下可以使用tearDown Thread Group 根据提供的帮助JMeter 拆解线程组 http jmeter apache org userman
  • Python:多重分配与单独分配速度

    我一直在寻求从我的代码中挤出更多的性能 最近 在浏览时这个 Python 维基页面 https wiki python org moin PythonSpeed 我发现了这个说法 多重分配比单独分配慢 例如 x y a b 比 x a y
  • 如何自动检索AJAX调用的URL?

    目的是对爬行蜘蛛进行编程 使其能够 1 检索此页面表格中链接的 URL http cordis europa eu fp7 security projects en html http cordis europa eu fp7 securi
  • Java 基准测试 - 为什么第二个循环更快?

    我对此很好奇 我想检查哪个函数更快 所以我创建了一些代码并执行了很多次 public static void main String args long ts String c sgfrt34tdfg34 ts System current
  • 为什么我的空循环在 Intel Skylake CPU 上作为函数调用时运行速度是原来的两倍?

    我正在运行一些测试来比较 C 和 Java 并遇到了一些有趣的事情 在 main 调用的函数中 而不是在 main 本身中 运行具有优化级别 1 O1 的完全相同的基准代码 导致性能大约翻倍 我正在打印 test t 的大小 以毫无疑问地验
  • 如何缓存 ASP.NET 网站以获得更好的性能

    我是一名网页设计师 通常设计不需要更新的企业网站 所以我想将输出缓存一天 我怎样才能做到这一点 此外 任何有关在慢速服务器上提高 ASP NET 性能的建议都被接受 请注意 ASP NET 缓存有一个bug http connect mic
  • php字符串是值类型吗?

    为什么php的string是值类型 每次将参数传递给函数时 每次进行赋值时 每次连接都会导致字符串被复制时 它都会被复制到各处 我的 NET 经验告诉我 它似乎效率低下 迫使我几乎在任何地方都使用引用 考虑以下替代方案 替代方案1 This
  • 为什么我的原生 C++ 代码在 Android 上运行速度比 Java 慢很多?

    我将 Java 代码的某些部分移植到 C 以加快 Android 上的计算速度 这是一个物理子例程 我发现本机代码的运行速度比 Java 代码慢几倍 我认为我的项目配置可能有问题 或者可能是数组处理有问题 所以我在 HelloAndroid
  • 我应该增强客户端上的 Jquery Mobile 元素还是发送带有 data-enhance="false" 的增强标记?

    我有一个产品搜索 我正在发送回结果 每个结果都包含两个按钮 JQM 控制组 我一次发送 24 条记录 因此需要增强 24 个控制组 如下所示 div class submitButton linkBox div
  • 如何读取 GPU 负载?

    我正在编写一个程序 用于监控计算机的各种资源 例如CPU使用率等 我还想监控 GPU 使用情况 GPU 负载 而不是温度 using System using System Collections Generic using System
  • 双端队列与队列速度

    我正在研究 LeetCode 上的一个问题 Here https leetcode com problems moving average from data stream 当我完成这个问题后 我想出了 class MovingAverag
  • C# 的快速线程安全随机数生成器

    我需要在多个正在运行的线程中快速生成随机浮点数 我尝试过使用System Random 但它对于我的需求来说太慢了 并且它在多个线程中返回相同的数字 当我在单线程中运行应用程序时 它工作正常 此外 我需要确保生成的数字在 0 到 100 之

随机推荐

  • 如何使用 MVC RAZOR 将 DataTable 绑定到 DropDownList?

    我的模型返回数据表的集合 如下所示 如何使用 MVC RAZOR 将 DataTable 绑定到 DropDownList 对于每个数据表 我想为其创建一个表行和一个下拉列表 我尝试了下面的代码 foreach DataTable data
  • QHash存储大量数据

    我有 10 000 000 个 struct int int int int 类型的条目 当我使用它们存储时QHash http doc qt io qt 5 qhash html or QMap http doc qt io qt 5 q
  • 使用 Dojo 设置 元素的值/文本

    我正在开发一个秒表应用程序 试图学习 Dojo Toolkit 因此 首先 我需要将小时 分钟 秒和毫秒设置为 0 I tried dojo byId hours value 00 还尝试过 domAttr set hours 00 它不起
  • 使用 webpack 编译 less

    我想添加一个非常基本的 less 文件到我的project https github com pbrianmackey uiexperiment在 github 上 参见这次提交 https github com pbrianmackey
  • 如何使用expressJS提供ReactJS静态文件?

    问题 我已成功提供 React 应用程序的 index html 文件 但是index js取代
  • 从存在缺失值的现有列创建新列

    我正在尝试根据这两列创建一个新列 假设我想创建一个新列 z 当 y 不丢失时 它应该是 y 的值 当 y 确实丢失时 它应该是 x 的值 所以在这种情况下 我期望 z 是 1 8 10 8 x y 0 1 NaN 1 2 8 2 4 10
  • Sympy:化简平方根

    Sympy 似乎无法简化涉及变量平方的平方根的表达式 In 28 a x 2 In 29 b a 1 2 In 30 b Out 30 0 5 2 x In 31 b simplify Out 31 0 5 2 x 我无法将此与其他变体一起
  • 使用 PHP 7.2.4 的 Ubuntu 16.04 上缺少 PDO 驱动程序

    我想在Kubuntu 16 04上尝试最新版本的PHP 从那时起 我似乎无法将pdo与mysql一起使用 当我启动 php 时 出现以下警告 PHP Warning PHP Startup Unable to load dynamic li
  • 从 s3 读取文件时 joblib.load 出错

    当尝试从 s3 读取文件时joblib load 我收到错误ValueError embedded null byte当尝试读取文件时 这些文件是由 joblib 创建的 并且可以从本地副本 在上传到 s3 之前在本地制作 成功加载 因此错
  • 在 Backbone 中进行视图混合的正确方法

    我一直扩展基本主干视图 并且每个部分都有一个基本视图 以便我可以在多个级别上扩展 我的问题是 执行视图混合的最有效方法是什么 可以混合到任何视图中的可重用视图部分 例如 var BaseProfile Backbone View exten
  • Yahoo Pipes:根据文本文件中的单词过滤提要中的项目

    我有一个管道 可以过滤 RSS 提要并删除任何包含我选择的 停用词 的项目 目前 我已经在管道编辑器中为每个停用词手动创建了一个过滤器 但更合乎逻辑的方法是从文件中读取它们 我已经弄清楚如何从文本文件中读取停用词 但是如何将过滤器运算符应用
  • ReCaptcha 在 iPhone 上无法正常工作

    我有一个带有简单联系表格的网站 验证有点少 因为它不进入数据库 只是一封电子邮件 该表格的工作原理如下 有 5 个字段 其中 4 个为必填字段 提交将被禁用 直到 4 个字段有效 然后您才能提交 然后 所有内容都会在服务器上再次验证 包括验
  • Hibernate 完全支持 SQLite 吗?

    Jboss Hibernate 中没有提及对 SQLite 的支持its wiki https community jboss org wiki SupportedDatabases2 Stack Overflow 帖子中也提到了同样的内容
  • ggplot2刻度填充梯度与离散上限

    我正在寻找价值热图 我希望热图从表示低值的蓝色 示例代码中的 0 变为表示高值的绿色 示例代码中的 75 但是 数据包含大于 75 的值 我希望任何大于 75 的值都用红色填充 总而言之 我希望填充从 0 到 75 蓝色 到绿色 绿色 任何
  • 如何将es6语法添加到atom编辑器

    我曾经使用 sublime text 但现在想使用atom io 编辑器 我有这些代码行 error Missing semicolon import React Component from react export default cl
  • 根据 Java 编码标准进行异常处理

    我有一个关于异常处理情况下的java标准的查询 代码片段 public String methodXXX This method may throw IllegalArgumentexception and arrayoutofbounda
  • 用 C++ 解释 2D 线段/四叉树 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 附 这可能不是重复的 我进行了搜索 并确保我没有得到我想要的东西 我是一名 ACM 问题解决者 最近我学习了线性数组的线段树和具有延迟传播的
  • 如何使用 CMake 和 Visual Studio 设置路径环境变量来运行测试

    我正在使用 CMake 生成 Visual Studio 项目文件 我想在设置 PATH 环境变量后运行测试可执行文件 以便它能够加载所需的 dll 我尝试按照讨论http www mail archive com 电子邮件受保护 msg2
  • 如何才能有一个永久状态行显示当前文件的名称?

    我总是忘记我正在编辑哪个文件 In Vim 7 x how can I have a permanent status bar at the bottom like what is displayed when I press Ctrl G
  • 托管爬虫的最佳解决方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个爬虫 可以爬行几个不同的域以获取新帖子 内容 内容总量数十万页 并且每天都有大量新内容添加 因此