返回介绍

常见问题 FAQ

发布于 2021-04-06 13:23:43 字数 1549 浏览 1022 评论 0 收藏 0

{info} QueryList存在多个版本,不同版本之间用法是不兼容的,看文档之前请先确认你看的文档版本号与你正在使用的QueryList版本号是否是对应的,据以往经验很多用户使用报错都是因为这个问题,可以通过文档右上角来切换文档版本号。


安装问题

安装相关的问题查看安装章节。

其它问题

Document with ID '...' isn't loaded. Use phpQuery::newDocument($html) or phpQuery::newDocumentFile($file) first.

此类错误一般是因为脚本中涉及大量的QueryList对象调用,而又没有及时释放资源的内存占用,导致内存溢出引起的,解决方法就是尽量重用同一个QueryList对象并及时释放资源的内存占用:

  • 错误示范

    foreach ($urls as $url) {
    QueryList::get($url)->rules([
      //....
    ])->query()->getData();
    }
  • 正确做法

    $ql = QueryList::rules([
      //....
    ]);
    foreach ($urls as $url) {
     $ql->get($url)->query()->getData();
     // 释放资源,销毁内存占用
     QueryList::destructDocuments();
    }

    或者这样:

    foreach($urls as $url){
      $ql = QueryList::rule([
              // ...
            ]);
      $data = $ql->get($url)->queryData();
    
      //....
    
      // 销毁当前QueryList对象
      $ql->destruct();
    }

DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';'

这是DOMDocumentloadHTML方法产生的警告信息,当采集的页面HTML格式是非标准化格式时会产生,可以在代码中加入下列代码来屏蔽输出此类警告信息:

libxml_use_internal_errors(true);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文