Como extrair metadados de sites usando a API Geekflare Meta Scraping

Publicados: 2022-11-30

Em geral, a extração da web é a extração de dados de um site do HTML produzido quando uma página da web é carregada.

Metascraping está extraindo os metadados da página da web das meta tags de uma página da web.

Os metadados de uma página da Web são informações sobre a página, mas não o conteúdo da página. Por exemplo, os metadados podem incluir o nome do autor, o título e a descrição da página da web.

Ele ajuda os usuários e os mecanismos de pesquisa a entender sobre o que é a página. A raspagem de metadados permite que um usuário colete rapidamente informações sobre páginas da web em menos tempo.

Várias abordagens podem ser usadas para descartar páginas da Web para seus metadados, incluindo coleta manual, usando uma biblioteca ou usando uma API como a Geekflare Metascraping API.

Muitas maneiras de matar um gato

Para descartar manualmente, pode-se abrir uma página da Web usando o Chrome DevTools e extrair os metadados da guia Elementos. No entanto, este manual é repetitivo e tedioso quando você está lidando com várias páginas. Podemos automatizar a tarefa usando várias abordagens:

A primeira abordagem é escrever o código do zero. Nessa abordagem, você faz uma solicitação HTTP para o site cujos metadados deseja extrair. Posteriormente, você pode analisar o HTML de resposta extraindo dados das meta tags usando expressões regulares ou correspondência de padrões. No entanto, essa abordagem está reinventando a roda, pois você gastará tempo reescrevendo o código existente.

A segunda abordagem é usar uma biblioteca em qualquer linguagem de programação de sua preferência. Isso permite que você abstraia os detalhes da implementação e mantenha as coisas simples. No entanto, se a linguagem de programação de sua escolha não tiver uma biblioteca adequada ou o tempo de execução específico que você está usando não suportar a biblioteca, você não poderá usá-la.

A terceira abordagem é usar uma API como a Geekflare Metascraping API. Essa abordagem é ideal porque oferece uma interface uniforme, independentemente de sua linguagem de programação. Ele pode ser usado em qualquer idioma, desde que suporte solicitações HTTP.

Este artigo demonstrará como usar a API Geekflare Metascraping com cURL, PHP e JavaScript (NodeJS).

Por que você deve usar a API Geekflare Metascraping?

Devido às desvantagens de outras abordagens, as vantagens de usar a API Geekflare são:

  • É independente de linguagem e ambiente de tempo de execução.
  • Você evita reinventar a roda e gasta menos tempo escrevendo código.
  • Você pode raspar vários sites com eficiência (em questão de segundos).
  • É incrivelmente fácil de usar.
  • Você pode usá-lo gratuitamente.

Introdução ao uso da API Geekflare

Para usar a API Geekflare, você precisará de uma chave de API. Para obter um, acesse o site da Geekflare e crie uma conta gratuita. Depois de criar sua conta, faça login no painel. No painel, você poderá ver sua chave de API.

Geekflare-Dashboard-1

Visão geral da API Geekflare Metascraping

O endpoint da API está localizado em https://api.geekflare.com/metascraping . Ao fazer uma solicitação, você deve fornecer sua chave de API como um cabeçalho de solicitação com o nome x-api-key e o valor sendo sua chave de API.

Você também precisará passar parâmetros adicionais no corpo da solicitação. Estes são url , device e proxyCountry .

  • URL especifica o URL da página da Web cujos metadados você deseja extrair.
  • Dispositivo especifica o dispositivo usado para visitar o site ao coletar metadados. Suas opções para dispositivos são móveis ou desktop.
  • O país proxy especifica o país do qual a solicitação deve ser feita antes que os dados sejam extraídos. O país proxy, no entanto, é um recurso premium e só pode ser usado nos planos pagos da Geekflare.

Dado que os parâmetros serão passados ​​como parte do corpo, a solicitação deve ser uma solicitação POST , pois as solicitações GET não podem conter metadados.

Usando a API Geekflare Metascraping em cURL

Na primeira demonstração, usaremos o utilitário cURL da linha de comando para solicitar a API Metascraping. Para usar o cURL, você precisará instalá-lo primeiro.

Vou usar um terminal Bash. Este deve ser o terminal padrão no macOS e Linux. Para Windows, você terá que instalar o Git Bash.

Após a instalação do cURL, podemos usar o comando cURL para fazer a solicitação. Passaremos opções para o comando para especificar os parâmetros da solicitação: o método de solicitação, o endpoint, o corpo da solicitação e os cabeçalhos da solicitação.

 curl -X POST \ https://api.geekflare.com/metascraping \ -d '{ "url": "https://tesla.com" }' \ -H 'Content-Type: application/json' \ -H 'x-api-key: <API_KEY>'

NB: A barra invertida após as três primeiras linhas permite dividir a entrada do comando em várias linhas.

Este comando especificou o método HTTP como POST e o endpoint como o endpoint de meta-scraping da API Geekflare.

Também enviamos o corpo da solicitação como um objeto JSON com uma propriedade de URL especificada como https://tesla.com. Por fim, adicionamos os cabeçalhos que especificam o tipo de conteúdo do corpo como JSON e fornecemos a chave de API usando o cabeçalho x-api-key .

Quando executamos este comando, obtemos a seguinte saída:

 {"timestamp":1669328564856,"apiStatus":"success","apiCode":200,"meta":{"url":"https://tesla.com","device":"desktop","test":{"id":"1fh2c30i05vmvxb99pdh6t6hze2x72jv"}},"data":{"author":null,"date":null,"description":"Tesla is accelerating the world's transition to sustainable energy with electric cars, solar and integrated renewable energy solutions for homes and businesses.","image":"https://tesla-cdn.thron.com/delivery/public/image/tesla/6139697c-9d6a-4579-837e-a9fc5df4a773/bvlatuR/std/1200x628/Model-3-Homepage-Social-LHD","logo":"https://tesla.com/themes/custom/tesla_frontend/assets/favicons/favicon-196x196.png","publisher":"Tesla","title":"Electric Cars, Solar & Clean Energy | Tesla","url":"https://www.tesla.com/","lang":"en"}}

Essa é a saída correta.

Usando a API Geekflare Metascraping com JavaScript

Para este projeto, criaremos um script NodeJS para buscar dados da API. Isso significa que você precisará do NodeJS instalado. Você também precisará do NPM ou de qualquer outro gerenciador de pacotes para Node para gerenciar as dependências do projeto. Também vou usar o terminal Bash para executar comandos.

Para usar a API em JavaScript, primeiro criamos uma pasta de projeto vazia e a abrimos em um terminal.

 mkdir metascraping-js && cd metascraping-js

Depois disso, podemos criar o arquivo onde vamos escrever o script:

 touch index.js

Então podemos instanciar o projeto como um projeto Node:

 npm init -y

Para usar a sintaxe do ESModule dentro do nosso arquivo, adicione a linha “ type:module ” à raiz do arquivo package.json de forma que fique assim:

 { "name": "metascraping", "version": "1.0.0", "description": "", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", }

Em seguida, instalaremos o pacote node-fetch . Este pacote fornece uma função de fetch no NodeJS que é semelhante à função de fetch do navegador. Isso torna mais fácil fazer solicitações HTTP no NodeJS do que usar o módulo http integrado para fazer solicitações.

 npm install node-fetch

Quando o pacote estiver instalado corretamente, podemos começar a editar o script. Abra o arquivo index.js usando um editor de texto de sua escolha. No meu caso, vou usar o editor de texto nano baseado em terminal.

 nano index.js

Editando o arquivo index.js , começamos importando a função fetch , que é a exportação padrão do módulo node-fetch .

 import fetch from 'node-fetch'

Em seguida, definiremos o corpo da nossa requisição. Isso será uma string JSON com uma propriedade url . O valor da propriedade url é a página da web cujos metadados queremos obter.

 const body = JSON.stringify({ url: 'https://spacex.com' });

Em seguida, podemos definir as opções de solicitação que passaremos para a função de fetch quando eventualmente a chamarmos.

 const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body }

Definimos nosso método de solicitação como sendo uma solicitação POST . Também definimos dois cabeçalhos. Um especifica que o corpo contém dados JSON e o outro fornece a chave de API.

Você pode substituir <SUA CHAVE DE API> pela sua chave de API real. Na prática, a chave API não deve ser codificada no arquivo, mas deve ser carregada usando variáveis ​​ambientais. Por fim, especificamos a propriedade do corpo como o valor da constante do corpo que definimos anteriormente.

Finalmente, fazemos a chamada para fetch

 fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))

Aqui, chamamos a função de busca, passando o endpoint da API e as opções que definimos anteriormente. Como fetch retorna uma promessa, anexamos um retorno de chamada que analisa as respostas JSON usando then .

O retorno de chamada retorna outra promessa e, quando resolver, iremos para console.log() o objeto retornado.

Em última análise, nosso arquivo deve ficar assim.

 import fetch from 'node-fetch' const body = JSON.stringify({ url: 'https://spacex.com' }); const options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': <YOUR API KEY here> }, body: body } fetch('https://api.geekflare.com/metascraping', options) .then(response => response.json()) .then(json => console.log(json))

Para executar o script, salve as edições e feche o nano ou o editor de texto que você está usando e digite o seguinte comando:

 node .

Você deve obter os seguintes metadados:

 { timestamp: 1669305079698, apiStatus: 'success', apiCode: 200, meta: { url: 'https://spacex.com', device: 'desktop', test: { id: '8m3srgqw06q2k8li5p6x70s8165d6e2f' } }, data: { author: null, date: null, description: 'SpaceX designs, manufactures and launches advanced rockets and spacecraft.', image: 'https://www.spacex.com/static/images/share.jpg', logo: 'https://spacex.com/static/images/favicon.ico', publisher: 'SpaceX', title: 'SpaceX', url: 'http://www.spacex.com/', lang: 'en' } }

Usando a API Geekflare com PHP

Para usar a Geekflare Metascraping API, primeiro certifique-se de ter o PHP e o Composer instalados em sua máquina local.

Para começar, crie e abra a pasta do projeto.

 mkdir metascraping-php && cd metascraping-php

Em seguida, instale o GuzzleHTTP. Guzzle é um dos muitos clientes PHP que você pode usar com a API Geekflare.

 composer require guzzlehttp/guzzle

Uma vez instalado o Guzzle, podemos criar um script com

 touch script.php

Então podemos começar a escrever o código. Usando um editor de texto de sua escolha, abra o arquivo script.php . No meu caso, vou usar o nano , que é um editor de texto baseado em terminal.

 nano script.php

Dentro do script, inserimos o PHP clichê

 <?php // All code goes here ?>

Agora, para carregar as extensões, importe as classes Request e Client do Guzzle. Este código deve ser escrito entre <?php e ?> que escrevemos antes.

 require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request;

Em seguida, podemos criar um cliente instanciando a classe GuzzleHttp\Client

 $client = new GuzzleHttp\Client();

Depois, podemos definir cabeçalhos para a solicitação. Para esta solicitação específica, forneceremos dois cabeçalhos, um que especifica que o tipo de conteúdo do corpo é JSON e o outro contendo nossa chave de API.

 $headers = [ 'x-api-key' => <YOUR API KEY HERE>, 'Content-Type' => 'application/json' ];

Substitua <YOUR API KEY HERE> pela sua chave de API real no painel Geekflare API.

Então, podemos definir o corpo. No nosso caso, o corpo será uma string JSON com a url da propriedade definida como "https://twitter.com"

 $body = json_encode([ "url" => "https://twitter.com" ]);

Para criar uma solicitação, instanciamos a classe de solicitação que importamos anteriormente, passando o método de solicitação, o endpoint, os cabeçalhos e o corpo da solicitação.

 $request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body);

Em seguida, usamos o cliente para enviar a solicitação.

 $response = $client->sendAsync($request)->wait();

Após, podemos extrair o corpo da requisição e imprimi-lo no console

 echo $response->getBody();

Se você copiou o código corretamente, o arquivo script.php deve ficar assim

 <?php require_once('vendor/autoload.php'); use GuzzleHttp\Client; use GuzzleHttp\Psr7\Request; $client = new GuzzleHttp\Client(); $headers = [ 'x-api-key' => <YOUR API KEY>, 'Content-Type' => 'application/json' ]; $body = json_encode([ "url" => "https://twitter.com" ]); $request = new Request('POST', 'https://api.geekflare.com/metascraping', $headers, $body); $response = $client->sendAsync($request)->wait(); echo $response->getBody(); ?>

Salve o script, feche-o e execute-o usando

 php script.php

Você deve obter a seguinte saída:

 { "timestamp":1669322100912, "apiStatus":"success", "apiCode":200, "meta": { "url":"https://twitter.com", "device":"desktop", "test":{ "id":"wn1nj30r04bk0ijtpprwdqmtuirg9lze" } }, "data":{ "author":null, "date":null, "description":"The latest stories on Twitter - as told by Tweets.", "image":"https://abs.twimg.com/a/1602199131/img/moments/moments-card.jpg", "logo":"https://abs.twimg.com/responsive-web/client-web/icon-ios.b1fc7279.png", "publisher":"Twitter", "title":"Explore", "url":"https://twitter.com/explore", "lang":"en" } }

Palavras Finais

Este guia passou por diferentes maneiras de consumir a API Geekflare Metascraping.

A API Metascraping permite que você também forneça mais parâmetros do que apenas o URL. Um desses parâmetros é o parâmetro proxy, que só pode ser acessado com o plano premium Geekflare API. Independentemente disso, a API Geekflare permanece poderosa o suficiente para muitos usos.

Confira a documentação oficial da API Geekflare para mais informações.