Encontrar palavras chaves relacionadas em PHP

Se você precisa encontrar palavras-chaves relacionadas a um determinado termo, você pode utilizar as palavras relacionadas do Google.

<?php

$lstr_googleQueryTerm = 'Teste de Vídeo';
$lstr_googleQueryURL = 'https://www.google.com/search?hl=en-US&q='.urlencode($lstr_googleQueryTerm);

$lstr_postContent = CURL_downloadHTTP ( $lstr_googleQueryURL, 'https://www.google.com/');
 
$dom = new DOMDocument;
libxml_use_internal_errors(1);
$dom->loadHTML($lstr_postContent);
$xpath = new DOMXpath( $dom );

$metas = $xpath->query('//*/div[contains(@class, \'card-section\')]//a/*');
$larr_relatedQuery = array();

foreach ($metas as $meta) {
    $larr_relatedQuery[] = $meta->textContent;
}

print_r($larr_relatedQuery);

function CURL_downloadHTTP ( $pstr_URL = '', $pstr_refererURL = '' )
{

	$lobj_curlObject = curl_init(); 
	
	curl_setopt($lobj_curlObject, CURLOPT_URL, $pstr_URL); 
	curl_setopt($lobj_curlObject, CURLOPT_HEADER, 0); 
	curl_setopt($lobj_curlObject, CURLOPT_FOLLOWLOCATION, 1); 
	curl_setopt($lobj_curlObject, CURLOPT_RETURNTRANSFER, 1); 
	curl_setopt($lobj_curlObject, CURLOPT_CONNECTTIMEOUT, 30); 
	curl_setopt($lobj_curlObject, CURLOPT_TIMEOUT, 30);
	curl_setopt($lobj_curlObject, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'); 
	curl_setopt($lobj_curlObject, CURLOPT_HTTPHEADER, array('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Accept-Language: en-us,en;q=0.5'));
    curl_setopt($lobj_curlObject, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($lobj_curlObject, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
    curl_setopt($lobj_curlObject, CURLOPT_DNS_CACHE_TIMEOUT, 2 );
	if (trim($pstr_refererURL) != '') curl_setopt($lobj_curlObject, CURLOPT_REFERER, $pstr_refererURL);
	curl_setopt($lobj_curlObject, CURLOPT_COOKIEJAR, dirname(__FILE__)."/cookie.txt");
	curl_setopt($lobj_curlObject, CURLOPT_COOKIEFILE, dirname(__FILE__)."/cookie.txt");

    $lstr_contentHTML = curl_exec($lobj_curlObject); 

    if(curl_errno($lobj_curlObject)){

        var_dump(curl_exec($lobj_curlObject));
        var_dump(curl_getinfo($lobj_curlObject));
        var_dump(curl_error($lobj_curlObject)); 

    }

	curl_close($lobj_curlObject); 
	
	return $lstr_contentHTML;
}

Será encontrado para o termo “Teste de Vídeo” as palavras relacionadas abaixo:

Array
(
    [0] => placa
    [1] => online
    [2] => test video download
    [3] => video test
    [4] => câmera
    [5] => test webcam
    [6] => video test online
    [7] => test video mp4
    [8] => speed
)

E caso você queira saber o que significa a consulta XPath no código acima “//*/div[contains(@class, \’card-section\’)]//a/*”:

1) //* – Procurar em todo o código HTML;
2) /div – Por tags Div;
3) [contains(@class, \’card-section\’)] – que contenham a classe “card-section”;
4) //a/* – e então retornar todos os links que estão dentro da classe acima;

Caso deseje saber mais sobre XPath, recomendo o XPath CheatSheet.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *