quer ajudar? Aqui estão as suas opções:","Crunchbase","Sobre nós","Obrigado a todos pelo fantástico apoio!","Ligações rápidas","Programa de afiliados","Prémio","ProxyScrape ensaio premium","Tipos de proxy","Países substitutos","Casos de utilização de proxy","Importante","Política de cookies","Declaração de exoneração de responsabilidade","Política de privacidade","Termos e condições","Redes sociais","Facebook","LinkedIn","Twitter","Quora","Telegrama","Discórdia","\n © Copyright 2025 - Thib BV | Brugstraat 18 | 2812 Mechelen | Bélgica | VAT BE 0749 716 760\n"]}
O Web scraping tornou-se uma ferramenta essencial para programadores e analistas de dados que precisam de extrair e analisar informações da Web. Quer esteja a acompanhar os preços dos produtos, a recolher dados para investigação ou a criar um painel de controlo personalizado, o Web scraping oferece possibilidades infinitas.
Se é um entusiasta de PHP, a Goutte é uma biblioteca fantástica a considerar para as suas necessidades de recolha de dados da web. Goutte é leve, fácil de usar e poderosa, combinando as capacidades do cliente HTTP do Guzzle com o DomCrawler do Symfony para uma raspagem suave e eficiente da web.
Este guia irá guiá-lo pelas noções básicas de raspagem da Web com PHP usando 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 programadores por várias razões, tornando-a uma das bibliotecas de raspagem de referência para PHP:
Quer seja um novato em PHP ou um programador experiente, o Goutte consegue um equilíbrio ideal entre simplicidade e potência.
Antes de se lançar na codificação, certifique-se de que os pré-requisitos necessários estão reunidos:
Para instalar o Goutte, basta executar o seguinte comando no seu terminal:
compositor require fabpot/goutte
Depois de instalada, verifique se a biblioteca está acessível, exigindo o carregador automático do Composer no seu projeto:
requerer 'vendor/autoload.php';
Agora está pronto para começar a raspar!
Vamos começar com um exemplo simples. Vamos recolher o título de uma página Web utilizando 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 raspar - Sandbox
Primeiros 5 títulos de livros:
- Uma luz no sótão
- A ponta do veludo
- A Soumission
- Objectos Afiados
- 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 web.
Depois de aprender a obter uma página Web, o passo seguinte é extrair dados específicos, tais como ligações ou conteúdos de elementos HTML específicos.
O seguinte script extrai o href
atributos de todos os <a>
numa página 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";
}
Isto devolverá todas as hiperligações presentes na página.
O Goutte facilita a extração ou análise de dados de HTML utilizando classe
ou ID
selectores. Para este exemplo, vamos utilizar o seletor Livros para o sítio Web Scrape. Especificamente, vamos recolher informações sobre cada livro, uma vez que todos partilham a mesma classe, produto_pod
. Eis como aparece no sítio Web:
Eis um exemplo de como pode conseguir isto utilizando 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 páginas. Na página de exemplo que estamos a utilizar, existe um botão "Seguinte" que permite a paginação para a página seguinte. Vamos aproveitar esse botão para implementar a paginação.
Primeiro, vamos localizar o botão utilizando o seu classe
atributo que tem como valor seguinte
. Dentro deste elemento, existe um <a>
que contém o URL da página seguinte. Ao extrair este URL, podemos utilizá-lo para enviar um novo pedido e passar sem problemas para a página seguinte. seguinte
na página.
Eis o aspeto do código que permite atingir este objetivo:
<?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 esta abordagem, pode automatizar a navegação entre páginas e continuar a extrair dados.
O Goutte também é capaz de lidar com formulários. Para demonstrar esta funcionalidade, vamos utilizar este sítio Web, que tem um único campo de entrada, como mostra a imagem abaixo:
Eis o aspeto do código para submeter este 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";
}
Este script preenche um campo de formulário chamado q
com o valor raspagem da web
e submete-o. A partir daqui, pode extrair conteúdo da página de resultados da pesquisa, tal como nos exemplos anteriores.
Adicione sempre o tratamento de erros para gerir situações inesperadas, como uma ligação de rede falhada 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 raspagem da Web deve ser sempre efectuada de forma ética e responsável. O ficheiro `robots.txt` é um ficheiro de texto simples utilizado pelos Web sites para comunicar com os Web crawlers, descrevendo as partes do site que podem ou não ser acedidas. Antes de fazer scraping, é importante verificar o ficheiro `robots.txt` para garantir que está a seguir as regras do sítio e a respeitar os seus termos. Ignorar estas diretrizes pode levar a problemas legais e éticos, por isso, faça sempre deste passo uma prioridade no seu processo de recolha de dados.
Saiba mais sobre robots.txt
aqui.
Seja cortês e evite enviar demasiados pedidos num curto período de tempo, uma vez que isso pode sobrecarregar o servidor e perturbar o seu desempenho para outros utilizadores. É uma boa prática incluir um pequeno atraso entre cada pedido para minimizar a carga no servidor e garantir que este consegue lidar com o tráfego de forma eficiente. A adoção destas medidas não só ajuda a manter a estabilidade do servidor, como também demonstra uma utilização responsável e atenciosa dos recursos partilhados.
sleep(1); // Espera 1 segundo entre pedidos
O Web scraping é uma ferramenta poderosa para recolher dados de forma eficiente, mas requer uma abordagem responsável e ponderada para evitar armadilhas comuns e garantir uma utilização ética. Ao aderir às melhores práticas, como respeitar os termos de serviço dos sítios Web, implementar atrasos adequados entre pedidos e utilizar ferramentas capazes de lidar com conteúdos dinâmicos, pode criar um raspador com um desempenho eficaz, minimizando 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 o seu raspador e os dados que recolhe. Com um planeamento e execução adequados, a recolha de dados da Web pode tornar-se um recurso inestimável para investigação, análise e inovação.