Como raspar o site usando a API de raspagem da Web etechpt.com

A raspagem da Web é um processo para extrair informações úteis da World Wide Web. Durante uma pesquisa no Google, um rastreador da Web (bot), ou seja, o rastreador, examina quase todo o conteúdo da Web e seleciona o que é relevante para você.

Essa ideia de que a informação ou conhecimento deve ser acessível a todos levou à formação da rede mundial de computadores. No entanto, os dados que você está procurando devem ser permitidos para uso público.

Como a raspagem da web é útil?

Vivemos na era dos dados. Os dados brutos podem ser convertidos em informações úteis que podem ser usadas para servir a um propósito maior com a ajuda do web scraping. Pode ser usado para analisar e estudar os usuários de um produto para melhorar o produto, ou seja, para criar um loop de feedback.

As empresas de comércio eletrônico podem usá-lo para estudar as estratégias de preços dos concorrentes e, consequentemente, elaborar as suas próprias. A raspagem da Web também pode ser usada para relatórios meteorológicos e de notícias.

desafios

#1. Restrição de IP

Vários sites limitam o número de solicitações que você pode fazer para obter os dados do site em um determinado intervalo de tempo, detectando seu endereço IP ou geolocalização. Eles fazem isso para evitar ataques maliciosos em seu site.

#2. CAPTCHA

Distinguir entre um humano real e um bot tentando acessar o site é o que os captchas realmente fazem. Os sites o usam para evitar spam no site, bem como para controlar o número de raspadores no site.

#3. Renderização do lado do cliente

Este é um dos maiores obstáculos para os web scrapers. Sites modernos usam estruturas de front-end capazes de criar aplicativos de página única. A maioria dos aplicativos de página única não possui conteúdo renderizado pelo servidor. Em vez disso, eles geram o conteúdo de acordo com a necessidade usando javascript do lado do cliente. Isso torna difícil para os raspadores saberem qual é o conteúdo de uma página da web. Para obter o conteúdo, você precisa renderizar algum javascript do lado do cliente.

  Por que diz Aguardando pagamento no G2A?

A API etechpt.com

Uma API de raspagem na web resolve a maioria dos desafios enfrentados durante a execução da raspagem na web porque ela cuida de tudo para você. Vamos explorar a API etechpt.com e ver como você pode usá-la para web scraping.

A API do etechpt.com tem um processo simples de três etapas para você:

  • Forneça um URL para raspar
  • Forneça algumas opções de configuração
  • Obter os dados

Ele pode raspar a página da Web para você e, em seguida, retornar dados HTML brutos como uma string ou em um arquivo HTML que pode ser acessado por meio de um link, da maneira que funcionar para você.

Usando a API

Neste tutorial, você aprenderá como usar a API etechpt.com usando NodeJS – um ambiente de tempo de execução javascript. Instale o NodeJS em seu sistema, caso ainda não o tenha feito, antes de prosseguir.

  • Execute o comando npm init -y no terminal na pasta ou diretório atual. Ele criará um arquivo package.json para você.
  • Dentro do arquivo package.json, altere o valor da chave principal para index.mjs se for outra coisa por padrão. Como alternativa, você também pode adicionar um tipo de chave e definir seu valor igual a module.
{
  “type”: “module”
}
  • Adicione uma dependência chamada axios executando o comando npm i axios no terminal. Essa dependência nos ajuda a fazer solicitações de busca para endpoints específicos.
  • Seu package.json deve se parecer com isto:
{
  "name": "webscraping",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "Murtuzaali Surti",
  "license": "ISC",
  "dependencies": {
    "axios": "^1.1.3"
  }
}
  • Importe axios dentro do arquivo index.mjs assim. Aqui, a palavra-chave import é usada porque é um módulo ES. Se fosse um arquivo commonJS, seria a palavra-chave require.
import axios from ‘axios’
  • A URL base para todas as nossas solicitações para a API etechpt.com será a mesma para cada terminal. Então, você pode armazená-lo dentro de uma constante.
const baseUrl="https://api.etechpt.com.com"
  • Especifique a URL da qual você deseja extrair e obter os dados.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Crie uma função assíncrona e inicialize os axios dentro dela.
async function getData() {
    const res = await axios({})
    return res
}
  • Nas opções de configuração do axios, você deve especificar o método como post, a URL junto com o endpoint, um cabeçalho conhecido como x-api-key cujo valor será a chave API fornecida por etechpt.com e por último, um objeto de dados que será enviado para a API etechpt.com. Você pode obter sua chave de API acessando dash.etechpt.com.com.
const res = await axios({
    method: "post",
    url: `${baseUrl}/webscraping`,
    headers: {
        "x-api-key": "your api key"
    },
    data: {
        url: toScrapeURL,
        output: 'file',
        device: 'desktop',
        renderJS: true
    }
})
  • Como você pode ver, o objeto de dados tem as seguintes propriedades:
    • url: a URL de uma página da web que precisa ser copiada.
    • saída: o formato no qual os dados são apresentados a você, seja embutido como uma string ou em um arquivo HTML. String embutida é o valor padrão.
    • dispositivo: o tipo de dispositivo no qual você deseja que a página da web seja aberta. Ele aceita três valores, ‘desktop’, ‘mobile’ e ‘tablet’, sendo ‘desktop’ o valor padrão.
    • renderJS: um valor booleano para especificar se você deseja renderizar javascript ou não. Esta opção é útil quando você está lidando com a renderização do lado do cliente.
  • Chame a função assíncrona e obtenha os dados. Você pode usar um IIFE (expressão de função invocada imediatamente).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • A resposta será algo como isto:
{
  timestamp: 1669358356779,
  apiStatus: 'success',
  apiCode: 200,
  meta: {
    url: 'https://murtuzaalisurti.github.io',
    device: 'desktop',
    output: 'file',
    blockAds: true,
    renderJS: true,
    test: { id: 'mvan3sa30ajz5i8lu553tcckchkmqzr6' }
  },
  data: 'https://api-assets.etechpt.com.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Analisando HTML

Para analisar o HTML, você pode usar um pacote npm chamado node-html-parser e também extrair dados do HTML. Por exemplo, se você deseja extrair o título de uma página da Web, pode fazer:

import { parse } from ‘node-html-parser’
const html = parse(htmlData) // htmlData is the raw html string you get from the etechpt.com API.

Como alternativa, se você deseja apenas os metadados de um site, pode usar o ponto de extremidade da API de metadados do etechpt.com. Você nem precisa analisar o HTML.

  Como desativar as notificações do meu Galaxy Widget em um telefone Samsung

Benefícios de usar a API etechpt.com

Em aplicativos de página única, o conteúdo geralmente não é renderizado pelo servidor, em vez disso, é renderizado pelo navegador usando javascript. Portanto, se você extrair o URL original sem renderizar o javascript necessário para renderizar o conteúdo, obterá nada além de um elemento de contêiner sem conteúdo. Deixe-me mostrar-lhe um exemplo.

Aqui está um site de demonstração construído usando react e vitejs. Raspe este site usando a API etechpt.com com a opção renderJS definida como false. O que você conseguiu?

<body>
    <div id="root"></div>
<body>

Há apenas um contêiner raiz sem conteúdo. É aqui que a opção renderJS entra em ação. Agora tente raspar o mesmo site com a opção renderJS definida como true. O que você ganha?

<body>
    <div id="root">
        <div class="App">
            <div>
                <a href="https://vitejs.dev" target="_blank">
                    <img src="/vite.svg" class="logo" >
                </a>
                <a href="https://reactjs.org" target="_blank">
                    <img src="/assets/react.35ef61ed.svg" class="logo react" >
                </a>
            </div>
            <h1>Vite + React</h1>
            <div class="card">
                <button>count is 0</button>
                <p>Edit <code>src/App.jsx</code> and save to test HMR</p>
            </div>
            <p class="read-the-docs">Click on the Vite and React logos to learn more</p>
        </div>
    </div>
</body>

Outro benefício de usar a API etechpt.com é que ela permite que você use um proxy rotativo para garantir que nenhum bloqueio de IP ocorra pelo site. A API etechpt.com inclui o recurso de proxy em seu plano premium.

  Como forçar o “Modo escuro” em qualquer aplicativo do iPhone com o Smart Invert

Palavras Finais

O uso de uma API de raspagem da Web permite que você se concentre apenas nos dados raspados sem muitos problemas técnicos. Além disso, a API etechpt.com também fornece recursos como verificação de link quebrado, meta scraping, estatísticas de carregamento do site, captura de tela, status do site e muito mais. Tudo isso em uma única API. Confira a documentação oficial da API etechpt.com para obter mais informações.