使用CRON自动数据抓取

时间:2011-03-01 23:59:12

标签: php cron yql

我目前正致力于一个应用程序,该应用程序从赛车网站收集有关赛狗的信息,并对给定数据执行大量计算。当前应用程序通过根据用户输入在赛车网站上执行单独的YQL请求,设法正确显示数据并执行正确的计算。

但是,我发现由于大量的HTTP调用和缺少数据缓存,应用程序往往有点慢。为了加快速度并开放进一步分析数据的能力,我想构建一种系统,通过cron选项卡来刮取并存储前一天晚上与之相关的所有数据。但是,我不确定如何去做。

目前,该应用程序经历了以下粗略过程:

  1. 允许用户选择日期
  2. 执行YQL查询并迭代结果以获取该日期的所有比赛
  3. 允许用户从上面的列表中选择种族
  4. 执行YQL查询并迭代结果以使所有的狗都参加比赛
  5. 执行YQL查询并迭代结果以获得每只狗执行的所有比赛
  6. 根据每只狗的比赛计算统计数据
  7. 输出所有内容
  8. 正如您所看到的,有很多单独的HTTP请求。这是不可避免的,因为每个数据集都存在于赛车网站的不同页面上。出于这个原因,我宁愿通过一个单独的系统来完成大部分处理,并将数据存储在数据库中,而不是在用户请求时进行收集和处理。

    我可以轻松地从当前系统中提取提取和计算处理,只需从cron选项卡运行它们,但它们都将从单个PHP请求运行。这意味着服务器必须迭代数千个数据,将每个数据集存储在数据库中,所有这些都在一个PHP请求中。没试过,我会假设请求会超时?

    总而言之,以下是我的问题:

    1. 如果我将处理放入一个PHP文件并从cron运行它,它会在完成工作之前超时吗?还是会继续进行?
    2. 是否有任何预先存在的库来处理此类任务?
    3. 有关替代方法的任何想法吗?
    4. 非常感谢,

1 个答案:

答案 0 :(得分:1)

对网站进行大规模爬行,按需缓存怎么样?

这可能更容易实现,并且如果他们的TOS不允许抓取(可能不会),则不会使竞赛网站产生怀疑。

您只需要一个按日期键入的本地sql表,并且包含您已输出的统计信息的列。

你的流程会像

  1. 允许用户选择日期
  2. 执行sql查询以查找该日期的预先计算数据。如果数据不存在转到3,否则转到9。
  3. 执行YQL查询并迭代结果以获取该日期的所有比赛
  4. 允许用户从上面的列表中选择种族
  5. 执行YQL查询并迭代结果以使所有的狗都参加比赛
  6. 执行YQL查询并迭代结果以获得每只狗执行的所有比赛。
  7. 根据每只狗的比赛计算统计数据
  8. 按用户日期将统计信息存储到sql表中。
  9. 输出所有内容