quer ajudar? Aqui estão suas opções:","Crunchbase","Sobre nós","Obrigado a todos pelo incrível apoio!","Links rápidos","Programa de afiliados","Premium","ProxyScrape teste premium","Verificador on-line Proxy","Proxy tipos","Proxy países","Proxy casos de uso","Importante","Cookie política","Isenção de responsabilidade","Política de privacidade","Termos e condições","Mídia social","Facebook","LinkedIn","Twitter","Quora","Telegrama","Discórdia","\n © Copyright 2025 - Thib BV | Brugstraat 18 | 2812 Mechelen | Bélgica | VAT BE 0749 716 760\n"]}
A Web scraping tornou-se uma ferramenta essencial para desenvolvedores e analistas de dados que precisam extrair e analisar informações da Web. Seja para rastrear preços de produtos, coletar dados para pesquisa ou criar um painel personalizado, a Web scraping oferece infinitas possibilidades.
Se você é um entusiasta do PHP, a Goutte é uma biblioteca fantástica a ser considerada para suas necessidades na Web scraping . A Goutte é leve, fácil de usar e avançada, combinando os recursos de cliente HTTP do Guzzle com o DomCrawler do Symfony para obter uma Web fácil e eficiente scraping.
Este guia o guiará pelos conceitos básicos da Web scraping com PHP usando o Goutte - desde ainstalação e seu primeiro script até técnicas avançadas, como manipulação de formulários e paginação.
A Goutte ganhou popularidade entre os desenvolvedores por vários motivos, tornando-a uma das bibliotecas scraping para PHP:
Seja você um novato em PHP ou um desenvolvedor experiente, o Goutte atinge o equilíbrio ideal entre simplicidade e potência.
Antes de começar a codificar, certifique-se de que os pré-requisitos necessários estejam em vigor:
Para instalar o Goutte, basta executar o seguinte comando em seu terminal:
compositor require fabpot/goutte
Depois de instalada, verifique se a biblioteca está acessível, exigindo o carregador automático do Composer em seu projeto:
requerer 'vendor/autoload.php';
Agora você está pronto para começar scraping!
Vamos começar com um exemplo simples. Vamos acessar scrape o título de uma página da Web usando o Goutte. Abaixo está o script básico:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
// Initialize Goutte Client
$client = new Client();
// Send a GET request to the target URL
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract the title of the page
$title = $crawler->filter('title')->text();
echo "Page Title: $title\n";
// Extract the titles of the first 5 books
echo "First 5 Book Titles:\n";
$crawler->filter('.product_pod h3 a')->slice(0, 5)->each(function ($node) {
echo "- " . $node->attr('title') . "\n";
});
?>
Saída:
Título da página: Todos os produtos | Livros para Scrape - Sandbox
Primeiros 5 títulos de livros:
- Uma luz no sótão
- Derrubando o Veludo
- Soumission
- Sharp Objects
- Sapiens: Uma Breve História da Humanidade
É tão fácil quanto isso! Com apenas algumas linhas de código, você pode buscar e exibir o título
de qualquer página da Web.
Depois de aprender a buscar uma página da Web, a próxima etapa é extrair dados específicos, como links ou conteúdo de elementos HTML específicos.
O script a seguir extrai o href
atributos de todos os <a>
em uma página da Web:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract all <a> tags
$links = $crawler->filter('a')->each(function ($node) {
return $node->attr('href');
});
// Print all extracted links
foreach ($links as $link) {
echo $link . "\n";
}
Isso retornará todos os hiperlinks presentes na página.
O Goutte facilita a extração ou análise de dados de HTML usando classe
ou ID
seletores. Para este exemplo, usaremos o seletor Livros para o site Scrape. Especificamente, vamos scrape informações sobre cada livro, já que todos compartilham a mesma classe, produto_pod
. Veja como ele aparece no site:
Aqui está um exemplo de como você pode fazer isso usando o Goutte:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Extract all <a> tags
$links = $crawler->filter('a')->each(function ($node) {
return $node->attr('href');
});
// Print all extracted links
foreach ($links as $link) {
echo $link . "\n";
}
// Extract elements with class 'product_pod'
$products = $crawler->filter('.product_pod')->each(function ($node) {
return $node->text();
});
// Print all extracted product details
foreach ($products as $product) {
echo $product . "\n";
}
Agora, vamos explorar como navegar ou paginar entre as páginas. Na página de exemplo que estamos usando, há um botão "Next" que permite a paginação para a próxima página. Aproveitaremos esse botão para implementar a paginação.
Primeiro, localizaremos o botão usando seu classe
que tem como valor próxima
. Dentro desse elemento, há um <a>
que contém o URL da próxima página. Ao extrair esse URL, podemos usá-lo para enviar uma nova solicitação e passar sem problemas para a próxima página. próxima
na página.
Veja a seguir como é o código que faz isso:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://books.toscrape.com/');
// Handle pagination using the 'next' button
while ($crawler->filter('li.next a')->count() > 0) {
$nextLink = $crawler->filter('li.next a')->attr('href');
$crawler = $client->request('GET', 'https://books.toscrape.com/catalogue/' . $nextLink);
// Extract and print the current page URL
echo "Currently on: " . $crawler->getUri() . "\n";
}
Com essa abordagem, você pode automatizar a navegação entre as páginas e continuar scraping dados.
O Goutte também é capaz de lidar com formulários. Para demonstrar essa funcionalidade, usaremos este site, que tem um único campo de entrada, conforme mostrado na imagem abaixo:
Veja como é o código para enviar esse formulário:
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
$crawler = $client->request('GET', 'https://www.scrapethissite.com/pages/forms/');
// Submit the search form with a query
$form = $crawler->selectButton('Search')->form();
$form['q'] = 'Canada';
$crawler = $client->submit($form);
// Extract and print the results
$results = $crawler->filter('.team')->each(function ($node) {
return $node->text();
});
foreach ($results as $result) {
echo $result . "\n";
}
Esse script preenche um campo de formulário chamado q
com o valor web scraping
e o envia. A partir daí, você pode extrair conteúdo da página de resultados de pesquisa, como nos exemplos anteriores.
Sempre adicione o tratamento de erros para gerenciar situações inesperadas, como uma falha na conexão de rede ou URLs inexistentes.
<?php
require 'vendor/autoload.php';
use Goutte\Client;
$client = new Client();
try {
$crawler = $client->request('GET', 'https://invalid-url-example.com');
echo "Page title: " . $crawler->filter('title')->text();
} catch (Exception $e) {
echo "An error occurred: " . $e->getMessage();
}
}
A Web scraping deve ser sempre executada de forma ética e responsável. O arquivo `robots.txt` é um arquivo de texto simples usado pelos sites para se comunicar com os rastreadores da Web, descrevendo quais partes do site podem ou não ser acessadas. Antes de acessar scraping, é importante verificar o arquivo `robots.txt` para garantir que você esteja seguindo as regras do site e respeitando seus termos. Ignorar essas diretrizes pode levar a problemas legais e éticos, portanto, sempre faça dessa etapa uma prioridade em seu processo de scraping .
Leia mais sobre robots.txt
aqui.
Seja cortês e evite enviar muitas solicitações em um curto período de tempo, pois isso pode sobrecarregar o servidor e prejudicar seu desempenho para outros usuários. É uma boa prática incluir um pequeno atraso entre cada solicitação para minimizar a carga no servidor e garantir que ele possa lidar com o tráfego de forma eficiente. A adoção dessas etapas não só ajuda a manter a estabilidade do servidor, mas também demonstra o uso responsável e atencioso dos recursos compartilhados.
sleep(1); // Aguarde 1 segundo entre as solicitações
A Web scraping é uma ferramenta poderosa para coletar dados com eficiência, mas requer uma abordagem responsável e cuidadosa para evitar armadilhas comuns e garantir o uso ético. Ao aderir às práticas recomendadas, como respeitar os termos de serviço do site, implementar atrasos apropriados entre as solicitações e usar ferramentas capazes de lidar com conteúdo dinâmico, você pode criar um raspador que funcione com eficiência e minimize o impacto nos servidores. Além disso, a verificação de certificados HTTPS e a atenção às considerações de segurança protegerão seu scraper e todos os dados que ele coletar. Com planejamento e execução adequados, a Web scraping pode se tornar um recurso inestimável para pesquisa, análise e inovação.