【问题标题】:php spider breaks in middle (Domdocument, xpath, curl) - help neededphp 蜘蛛在中间中断(Domdocument、xpath、curl) - 需要帮助
【发布时间】:2013-02-01 01:20:46
【问题描述】:

我是一名初级程序员,正在设计一个抓取页面的蜘蛛。逻辑是这样的:

  • 使用 curl 获取 $url
  • 创建dom文档
  • 使用xpath解析href标签
  • 在 $totalurls 中存储 href 属性(尚未存在)
  • 从 $totalurls 更新 $url

问题是,在第 10 个爬取页面之后,蜘蛛说它在页面上没有找到任何链接,在下一个页面上没有任何链接,等等。

但如果我从前面示例中的第 10 个页面开始,它会发现所有链接都没有问题,但在爬取 10 个 url 后再次中断。

知道是什么原因造成的吗?我的猜测是 domdocument,也许我不是 100% 熟悉它。或者存储太多数据会导致麻烦?这可能是一些真正的初学者问题,因为我是全新的 - 而且一无所知。请给我一些建议在哪里寻找问题

【问题讨论】:

  • 显示一些代码将帮助您获得更好的答案。
  • 任何数量的事情都可能导致这种情况,但我要检查的一件事是您是否在关注重定向。
  • 它可能已达到超时限制。如果没有,请尝试检查您的错误日志/打开它们。
  • 我假设@Class 是正确的,这里的主要瓶颈肯定是 curl,而不是 domdocument。为了加快速度,您可能需要查看 curl_multi_exec 并延长 PHP 脚本的最大超时时间。

标签: php curl xpath domdocument web-crawler


【解决方案1】:

我的猜测是您的脚本在 30 或 60 秒后超时(默认为 php),可以用 set_time_limit($num_of_seconds); 覆盖,或者您可以在 php.ini 中更改您的 max_execution_time,或者如果您有主机,您可以通过 php 设置(或其他名称)更改一些值。

您可能还想将其添加到页面顶部:

error_reporting(E_ALL);
ini_set("display_errors", 1);

并检查您的错误日志以查看是否有与您的蜘蛛相关的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多