Enviar uma solicitação, neste caso, significa basicamente aceder ao HTML de uma página diretamente com código PHP. Existem duas maneiras de fazer isso.
Primeiro, podemos usar a biblioteca PHP-CURL, que também nos permite modificar os cabeçalhos e o corpo que enviamos na nossa solicitação.
<?php
header("Content-Type: text/plain"); // We choose to display the content as plain text
$ch = curl_init("https://www.imdb.com/chart/top/");
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch); // Running the request
if (curl_error($ch)) {
echo curl_error($ch); // Displaying possible errors from the request
} else {
echo $response; // Displaying the content of the response
}
curl_close($ch);
?>
Outra opção é uma linha única, utilizando o método file_get_contents($url), mas isto pode ser insuficiente em alguns casos. Para enviar cabeçalhos para esta solicitação, é necessário utilizar um contexto criado com o método stream_context_create.
<?php
header("Content-Type: text/plain"); // We choose to display the content as plain text
echo file_get_contents('https://www.imdb.com/chart/top/'); // We retrieve and display the contents of the response in a single line
?>
Deve decidir qual o método a utilizar com base na complexidade do scraper que pretende construir.
Os dois trechos de código acima irão exibir o código-fonte HTML da página que estamos a extrair, o mesmo que é visível quando inspeciona o site. Iremos utilizar a primeira linha do código para exibir os resultados como texto simples. Caso contrário, será renderizado diretamente como HTML.
Se houver diferenças na estrutura HTML, significa que um código JavaScript está a ser executado no site e a alterar o conteúdo assim que um utilizador acede ao mesmo. Preparámos uma dica sobre como lidar com isso mais adiante neste artigo.