gpt4 book ai didi

php - 使用 PHPQuery 的问题

转载 作者:行者123 更新时间:2023-12-02 06:42:53 25 4
gpt4 key购买 nike

我尝试使用 PHPquery 来抓取网页 (free-lance.ru)

Simple HTML Dom 中的等效代码正在运行:

include('simple_html_dom.php');

$shd = str_get_html($html);

$projects = array();
$i = 0;
foreach ($shd->find('.project-preview') as $work){
$projects[$i]['name'] = $work->find('h3', 0)->children(1)->plaintext;
$i++;
}

但我在 PHPQuery 中需要它。

我尝试使用类似的东西:

include('phpQuery.php');

$pq = phpQuery::newDocument($html);

foreach ($pq->find('.project-preview') as $work){
echo 'wow';
}

但它不起作用... sizeof($pq->find('.project-preview')) 为 0

我将非常感谢任何帮助。

最佳答案

我也有同样的疑问!所以为下一个访问者回答这个问题。

简单的 HTML Dom 存在一些内存泄漏问题。当您通过选择器“克隆”对象时,您必须非常小心。避免它!

据我所知,对于 phpQuery,它只是一个清除所有内容的命令。

phpQuery::unloadDocuments();

我测试了 phpQuery。看起来它没有内存泄漏。内存使用率也非常低。 90 kB 的文件只有 4 kB。所以它看起来像实时解析并且没有内存中的文档。至少那是我发现的,我可能是错的。

还尝试创建 20-30 个文档并每次都使用卸载,没有增加内存...很好!

这是我的答案:

include('phpQuery.php');

$pq = phpQuery::newDocument($html);

$projects = array();
$i = 0;

foreach ($pq['.project-preview'] as $work) {
// iteration returns PLAIN dom nodes, NOT phpQuery objects
$pqwork = pq($work);

$projects[$i]['name'] = $pqwork['div']->eq(1)->text();
// Unfortunately pq($work)['div']->eq(1)->text(); does not work

$i++;
}

phpQuery::unloadDocuments();

如果我们有更多基本内容的示例,那就太好了!好的项目,糟糕的文档。或者至少我找不到解释 text() 函数的文档。

基准估计:

  • phpQuery 加载文档的速度大约快 3.5。

  • 简单的 HTML Dom 在选择时看起来快 30% :(

关于php - 使用 PHPQuery 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com