我试着用PHPquery来刮网页(免费)
简单HTML Dom中的Equiv代码正在工作:
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';
}但不管用..。大小($pq->find(‘..project预览’))为0
我将非常感谢你的帮助。
发布于 2011-12-18 00:49:51
我也有同样的问题!所以回答下一个问题的来访者。
简单的HTML存在一些内存泄漏问题。当您通过对象的选择器‘克隆’对象时,您必须非常小心。避开它!
据我所知,使用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()函数的文档。
基准估计数:
在加载documents.
)快30%
发布于 2011-02-22 09:56:22
你的代码看起来很好。这个基本相同的代码对我来说运行得很好。
$q = phpQuery::newDocument('
<html>
<body>
<div class="findme">Lorem ipsum</div><div class="ignoreme">dolor sit amet</div>
</body>
</html>
'
);
foreach($q->find('.findme') as $tag) {
echo 'Found: '.$tag->tagName."(".$tag->getAttribute('class').")\n";
}结果:
发现: div(findme)
因此,问题是:
更新:
从下面的评论中可以看出,您正在尝试用newDocment()打开一个html文件。那是行不通的。您必须使用newDocumentFile() --或者自己读取文件内容,然后使用newDocument(),将所读内容传递给phpQuery。
https://stackoverflow.com/questions/5076074
复制相似问题