Saudações a todos. Recentemente, solicitei que fosse necessário puxar dados automaticamente para o site (em outras palavras, escreva um analisador).
O conteúdo do artigo:
Prefácio
Desde que eu trabalho no php, meus olhos caíram na biblioteca do
phpQuery . É claro que concordo que existem muitas outras bibliotecas, incluindo a
embutida no php por padrão , mas para um programador comum que trabalha como freelancer no fim de semana, você precisa de algum tipo de milagre. Felizmente, a preguiça nos leva a todos. Uma preguiça tcheca levou à criação do phpQuery.
Não encontrei nenhuma documentação em russo para esta biblioteca (talvez eu estivesse parecendo mal?). Encontrando várias perguntas dos novatos nos fóruns e não conseguindo ler a documentação em inglês, pensei em escrever este artigo. Observe que o artigo foi escrito principalmente
para iniciantes .
Vamos começar
PhpQuery não é a biblioteca mais rápida, mas uma das. Com as versões mais recentes do php, é quase invisível. A carga principal, como antes, repousa no carregamento da página.
Possui muitos recursos que não são mencionados em muitos manuais em russo.
Alguns programadores, sem entender o phpQuery, correm para criar suas próprias bibliotecas (assim como nossos colegas do mundo js). Sim, esta biblioteca tem uma grande desvantagem - o código está desatualizado, mas funciona por si só.
Iniciar trabalhar
É muito difícil para os iniciantes entenderem imediatamente como o phpQuery funciona. Mas vou tentar "mastigar" todos os momentos difíceis, tanto quanto possível.
Muitos métodos desta biblioteca visam trabalhar com o Dom, como se estivéssemos trabalhando no jQuery. E os nomes dessas bibliotecas são os mais semelhantes possíveis.
E assim Primeiro, precisamos decidir sobre o site no qual pegaremos o código HTML. A propósito, isso não precisa ser um site. Se já temos html (xml) no arquivo (variável), podemos carregá-lo a partir daí.
$html = file_get_contents("$siteName");
Em seguida, precisamos passar o código resultante para o manipulador phpQuery
$dom = phpQuery::newDocument($html);
O método "newDocument ()" retornará um objeto dom com o qual podemos trabalhar.
Agora podemos encontrar algo nesse objeto dom. Vamos imaginar que estamos acessando uma página de um site onde existe esse bloco:
<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>
Neste exemplo, há uma linha com um link para a marca, nome da marca, nome do produto, sua descrição, ID e preço.
Prático parte de
Vamos tentar obter todos os dados acima.
Na saída, obtemos esta matriz:
Array ( [0] => Array ( [brand-href] => https://-_.com/-_ [brand-name] => - [product-name] => Jeans Denim [product-price] => € 200 [product-description] => [product-id] => 830214303 ) )
Conclusão
PhpQuery é uma biblioteca muito útil, mas infelizmente muito pesada. Portanto, depois de analisar os elementos, é recomendável descarregar o documento:
phpQuery::unloadDocuments();
Apesar da conveniência da biblioteca, recomendo que você não se acostume. Provavelmente é mais adequado para resolver pequenos problemas. Mas essa ainda é uma biblioteca um pouco desatualizada.
Esta biblioteca tem a capacidade de adicionar itens rapidamente. Mas abordaremos esse tópico no próximo artigo.