问候大家。 最近,我下了一个命令,该命令有必要将数据自动拉到站点(换句话说,编写解析器)。
文章内容:
前言
由于我使用php,因此我的目光投向了
phpQuery库。 当然,我同意还有许多其他的库,包括
默认情况下内置于php的库,但是对于在周末从事自由职业的普通程序员来说,您需要某种奇迹。 幸运的是,懒惰驱使我们所有人。 一位捷克人的懒惰导致了phpQuery的创建。
我没有找到该库的俄文文档(也许我看得不好?)。 我发现了从新手到论坛的一堆问题,并且无法阅读英文文档,因此我考虑写这篇文章。 请注意,本文主要是
为初学者编写的。
让我们开始吧
PhpQuery不是最快的库,而是其中之一。 随着新的PHP版本,它几乎是看不见的。 像以前一样,主要负载在于页面加载。
它具有许多俄语手册中未提及的功能。
一些程序员在不了解phpQuery的情况下,开始创建自己的库(就像js世界的同事一样)。 是的,该库有一个主要缺点-代码已过时,但可以自己使用。
开始 工作
初学者很难立即了解phpQuery的工作原理。 但是,我将尽量“咀嚼”所有困难时刻。
该库的许多方法都旨在与Dom配合使用,就像我们在使用jQuery一样。 这些库的名称尽可能相似。
等等。 首先,我们需要确定要从中获取HTML代码的站点。 顺便说一句,这不必是站点。 如果文件(变量)中已经有html(xml),则可以从那里加载它。
$html = file_get_contents("$siteName");
接下来,我们需要将生成的代码传递给phpQuery处理程序
$dom = phpQuery::newDocument($html);
“ newDocument()”方法将返回一个我们可以使用的dom对象。
现在我们可以在这个dom对象中找到一些东西。 让我们想象一下,我们正在拉起一个存在此类障碍的网站页面:
<div class="product-essential"> <a class="brand-link" href="https://-_.com/-_" title="- "> <span class="brand-name">- </span> </a> <div class="product-name"> <h1>Jeans Denim</h1> </div> <div class="price-info"> <div class="price-box"> <span class="regular-price" id="product-price-424337"> <span class="price">€ 200</span> </span> </div> </div> <div class="description"> <span class="product-description"> </span> <div class="sku"> <span> ID :</span> <span>830214303</span> </div> </div> </div>
在此示例中,一行带有指向品牌,品牌名称,产品名称,其描述,ID和价格的链接。
实用的 的一部分
让我们尝试获取所有上述数据。
在输出中,我们得到以下数组:
Array ( [0] => Array ( [brand-href] => https://-_.com/-_ [brand-name] => - [product-name] => Jeans Denim [product-price] => € 200 [product-description] => [product-id] => 830214303 ) )
结论
PhpQuery是一个非常方便的库,但是很不幸。 因此,在浏览完元素之后,建议卸载文档:
phpQuery::unloadDocuments();
尽管图书馆很方便,但我建议您不要习惯它。 它可能最适合解决小问题。 但这仍然有点过时。
该库可以动态添加项目。 但是我们将在下一篇文章中讨论这个主题。