Jak zeskrobać witrynę za pomocą interfejsu API newsblog.pl Web Scraping

Web scraping to proces wydobywania przydatnych informacji z sieci World Wide Web. Podczas wyszukiwania w Google robot indeksujący (bot), czyli robot indeksujący, przegląda prawie całą zawartość sieci i wybiera to, co jest dla Ciebie istotne.

Ta idea, że ​​informacja lub wiedza powinna być dostępna dla każdego, doprowadziła do powstania sieci WWW. Jednak dane, których szukasz, muszą być dopuszczone do użytku publicznego.

Jak przydatne jest web scraping?

Żyjemy w epoce danych. Surowe dane można przekształcić w przydatne informacje, które można wykorzystać do większego celu za pomocą skrobania sieci. Może być używany do analizowania i badania użytkowników produktu w celu ulepszenia produktu, innymi słowy, do stworzenia pętli sprzężenia zwrotnego.

Firmy e-commerce mogą go używać do badania strategii cenowych konkurentów i odpowiednio opracowywać własne. Zgarnianie sieci może być również wykorzystywane do raportowania pogody i wiadomości.

Wyzwania

# 1. Ograniczenie adresu IP

Niektóre witryny ograniczają liczbę żądań, które możesz złożyć, aby uzyskać dane witryny w określonym przedziale czasu, wykrywając Twój adres IP lub geolokalizację. Robią to, aby zapobiec złośliwym atakom na ich stronę internetową.

#2. Captcha

Rozróżnienie między prawdziwym człowiekiem a botem próbującym uzyskać dostęp do witryny jest tym, co faktycznie robią captcha. Serwisy używają go do zapobiegania spamowi na stronie, a także do kontrolowania liczby scraperów na stronie.

#3. Renderowanie po stronie klienta

Jest to jedna z największych przeszkód dla skrobaków internetowych. Nowoczesne strony internetowe wykorzystują frameworki frontendowe, które są w stanie tworzyć aplikacje jednostronicowe. Większość aplikacji jednostronicowych nie zawiera zawartości renderowanej przez serwer. Zamiast tego generują treść zgodnie z potrzebami za pomocą javascript po stronie klienta. Utrudnia to skrobakom poznanie zawartości strony internetowej. Aby uzyskać zawartość, musisz wyrenderować javascript po stronie klienta.

Interfejs API newsblog.pl

Web scraping API rozwiązuje większość problemów napotykanych podczas wykonywania web scrapingu, ponieważ obsługuje wszystko za Ciebie. Przyjrzyjmy się interfejsowi API newsblog.pl i zobaczmy, jak można go użyć do skrobania stron internetowych.

API newsblog.pl ma dla Ciebie prosty trzyetapowy proces:

  • Podaj adres URL do zeskrobania
  • Podaj kilka opcji konfiguracyjnych
  • Pobierz dane

Może zeskrobać stronę internetową, a następnie zwrócić surowe dane HTML jako ciąg znaków lub w pliku HTML, do którego można uzyskać dostęp za pośrednictwem łącza, w zależności od tego, który sposób Ci odpowiada.

Korzystanie z interfejsu API

W tym samouczku dowiesz się, jak korzystać z API newsblog.pl przy użyciu NodeJS – środowiska uruchomieniowego javascript. Zainstaluj NodeJS w swoim systemie, jeśli jeszcze tego nie zrobiłeś, zanim przejdziesz dalej.

  • Uruchom polecenie npm init -y w terminalu w bieżącym folderze lub katalogu. Utworzy dla Ciebie plik package.json.
  • W pliku package.json zmień wartość klucza głównego na index.mjs, jeśli domyślnie jest to coś innego. Alternatywnie możesz również dodać typ klucza i ustawić jego wartość równą module.
{
  “type”: “module”
}
  • Dodaj zależność o nazwie axios, uruchamiając komendę npm i axios w terminalu. Ta zależność pomaga nam w wysyłaniu żądań pobierania do określonych punktów końcowych.
  • Twój plik package.json powinien wyglądać mniej więcej tak:
{
  "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"
  }
}
  • Zaimportuj axios do pliku index.mjs w ten sposób. Tutaj używane jest słowo kluczowe import, ponieważ jest to moduł ES. Gdyby był to plik commonJS, byłoby to słowo kluczowe require.
import axios from ‘axios’
  • Podstawowy adres URL dla wszystkich naszych żądań do API newsblog.pl będzie taki sam dla każdego punktu końcowego. Możesz więc zapisać go w stałej.
const baseUrl="https://api.newsblog.pl.com"
  • Podaj adres URL, z którego chcesz zeskrobać i pobrać dane.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Utwórz funkcję asynchroniczną i zainicjuj w niej osie.
async function getData() {
    const res = await axios({})
    return res
}
  • W opcjach konfiguracyjnych axios należy określić metodę jako post, adres URL wraz z punktem końcowym, nagłówek x-api-key, którego wartością będzie klucz API dostarczony przez newsblog.pl oraz obiekt danych, który zostanie wysłany do API newsblog.pl. Klucz API można uzyskać wchodząc na stronę dash.newsblog.pl.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
    }
})
  • Jak widać, obiekt danych ma następujące właściwości:
    • url: adres URL strony internetowej, którą należy zeskrobać.
    • dane wyjściowe: format, w jakim dane są prezentowane, albo jako ciąg znaków, albo w pliku HTML. Ciąg wbudowany jest wartością domyślną.
    • urządzenie: rodzaj urządzenia, na którym chcesz otworzyć stronę internetową. Akceptuje trzy wartości: „desktop”, „mobile” i „tablet”, przy czym „desktop” jest wartością domyślną.
    • renderJS: wartość logiczna określająca, czy chcesz renderować javascript, czy nie. Ta opcja jest przydatna, gdy masz do czynienia z renderowaniem po stronie klienta.
  • Wywołaj funkcję asynchroniczną i pobierz dane. Możesz użyć IIFE (wyrażenie natychmiast wywołanej funkcji).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • Odpowiedź będzie mniej więcej taka:
{
  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.newsblog.pl.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Parsowanie HTML

Aby przeanalizować HTML, możesz użyć pakietu npm o nazwie node-html-parser i również wyodrębnić dane z HTML. Na przykład, jeśli chcesz wyodrębnić tytuł ze strony internetowej, możesz:

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

Alternatywnie, jeśli chcesz tylko metadane ze strony internetowej, możesz użyć punktu końcowego interfejsu API metadanych newsblog.pl. Nie musisz nawet analizować kodu HTML.

Korzyści z używania API newsblog.pl

W aplikacjach jednostronicowych treść często nie jest renderowana przez serwer, zamiast tego jest renderowana przez przeglądarkę przy użyciu javascript. Tak więc, jeśli zeskanujesz oryginalny adres URL bez renderowania javascript potrzebnego do renderowania treści, otrzymasz tylko element kontenera bez treści. Pozwól, że pokażę ci przykład.

Oto strona demonstracyjna zbudowana przy użyciu React i Vitejs. Zeskrob tę witrynę za pomocą interfejsu API newsblog.pl z opcją renderJS ustawioną na wartość false. Co dostałeś?

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

Jest tylko kontener główny bez zawartości. W tym miejscu do akcji wkracza opcja renderJS. Teraz spróbuj zeskrobać tę samą witrynę z opcją renderJS ustawioną na true. Co dostajesz?

<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>

Kolejną zaletą korzystania z interfejsu API newsblog.pl jest to, że umożliwia on korzystanie z obrotowego serwera proxy, dzięki czemu można mieć pewność, że witryna nie będzie blokować adresów IP. Interfejs API newsblog.pl obejmuje funkcję proxy w ramach planu premium.

Ostatnie słowa

Korzystanie z web scrapingu API pozwala skupić się tylko na zeskrobanych danych bez zbytniego problemu technicznego. Oprócz tego interfejs API newsblog.pl zapewnia również takie funkcje, jak sprawdzanie uszkodzonych linków, meta scraping, statystyki obciążenia witryny, przechwytywanie zrzutów ekranu, status witryny i wiele więcej. Wszystko to w ramach jednego interfejsu API. Sprawdź oficjalną dokumentację interfejsu API newsblog.pl, aby uzyskać więcej informacji.