Como extrair metadados de sites usando a API etechpt.com Meta Scraping

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 API de Metascraping etechpt.com.

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 API de Metascraping etechpt.com. 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 Metascraping etechpt.com com cURL, PHP e JavaScript (NodeJS).

Devido às desvantagens de outras abordagens, as vantagens de usar a API etechpt.com 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 etechpt.com

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

  Como renomear pastas em um iPhone ou iPad

O endpoint da API está localizado em https://api.etechpt.com.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 o url, o dispositivo e o 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 etechpt.com.

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.

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.etechpt.com.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.

Esse comando especificou o método HTTP como POST e o terminal como o terminal de meta-raspagem da API etechpt.com.

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.

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” na 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 busca no NodeJS que é semelhante à função de busca 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 busca 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.

  Diagramas de espinha de peixe ou Ishikawa em menos de 5 minutos

Você pode substituir 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 buscar

fetch('https://api.etechpt.com.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.etechpt.com.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 etechpt.com com PHP

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

  Procurando Traceroute no RHEL 8? Experimente o Tracepath

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 etechpt.com.

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 que escrevemos antes.

require_once('vendor/autoload.php');

use GuzzleHttpClient;
use GuzzleHttpPsr7Request;

Em seguida, podemos criar um cliente instanciando a classe GuzzleHttpClient

$client = new GuzzleHttpClient();

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 pela sua chave de API real no painel da API etechpt.com.

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.etechpt.com.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 GuzzleHttpClient;
	use GuzzleHttpPsr7Request;

	$client = new GuzzleHttpClient();

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

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

	$request = new Request('POST', 'https://api.etechpt.com.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 Metascraping etechpt.com.

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 da API etechpt.com. Independentemente disso, a API etechpt.com permanece poderosa o suficiente para muitos usos.

Confira a documentação oficial da API etechpt.com para obter mais informações.