【问题标题】:Optimising a PHP web scraper to avoid 500 server errors优化 PHP 网络爬虫以避免 500 服务器错误
【发布时间】:2013-05-06 00:20:09
【问题描述】:

我正在运行一个 PHP 网络抓取工具,用于从在线商店获取信息(免责声明,我已获得商店的许可)。刮板有3个功能:

  1. 从 JSON 文件中获取商店 URL 列表(为方便起见,假设我将一个 URL 传递给函数)
  2. 函数getLinks 获取提供的URL 页面上的所有链接,找到“下一个项目”链接,转到它,从该页面获取产品链接,等等。它将它们放入数组$allLinks
  3. 我跑foreach ($allLinks as $key => $value) {getInfo($value);}
  4. 函数getInfo($value) 转到每个产品 URL 并从每个单独的产品页面获取产品信息。

这是完整代码 http://pastebin.com/SHHbG9EN#

在我的服务器上,这会导致错误,因为(AFAIK)我使用了太多内存/代码非常麻烦。我可以打印出getLinks 的结果就好了,但是只要我刮得更深,我就会得到一个 500 服务器错误(并且没有任何内容发布到日志中)。

我的问题

我应该将我的结果写入 mysql,这会减轻程序的负载吗?如果是这样,最好的方法是什么?我是否需要(以某种方式)清除我的变量或释放内存的东西?我对 PHP 很陌生,所以优化我的代码的复杂性对我来说是陌生的。

【问题讨论】:

  • 您确定#item_info h2 使用正确吗,因为对于给定的网址,我看不到“#item_info h2”。刚刚做了 firebug conolse 检查 $("#item_info h2").length 并返回 0 长度。
  • @Shridhar 认为您正在查看错误的页面,是的,它存在。

标签: php web-scraping


【解决方案1】:

【讨论】:

  • 他说的是他自己的应用程序创建了 500 错误,而不是在他正在抓取的页面上避免 500 错误。
  • 我已经添加了这一点在日志中。我假设这是一个内存问题,因此我为什么要询问将数据写入 MYSQL 以(也许?)减轻服务器的负载
猜你喜欢
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
相关资源
最近更新 更多