Како да сцрапе веб локацију користећи вдзвдз Веб Сцрапинг АПИ

Веб стругање (енг. web scraping) представља процес издвајања корисних података са интернета. Када користите Гугл претрагу, веб индексатор (бот), односно „краулер“, прегледа готово сав садржај на вебу и одабира оно што је релевантно за ваш упит.

Идеја да информације и знање треба да буду доступни свима довела је до стварања светске мреже. Међутим, подаци које тражите морају бити дозвољени за јавну употребу.

Која је корист од веб стругања?

Живимо у доба велике количине података. Необрађени подаци се уз помоћ веб стругања могу претворити у корисне информације које се могу искористити за различите сврхе. На пример, могу се користити за анализу и проучавање понашања корисника производа, што омогућава побољшање самих производа и прикупљање повратних информација.

Компаније које се баве е-трговином могу користити веб стругање за проучавање ценовних стратегија конкуренције и прилагођавање сопствених. Такође, веб стругање се може користити за прикупљање података о временским приликама и извештавање о вестима.

Изазови

#1. Ограничења ИП адреса

Многе веб странице ограничавају број захтева које можете послати у одређеном временском периоду. Ово се постиже путем детекције ваше ИП адресе или геолокације. Ова пракса се примењује како би се спречили злонамерни напади на веб сајтове.

#2. Цаптцха

Цаптцха технологија служи за разликовање правих корисника од ботова који покушавају приступити веб страници. Веб странице користе капчу како би спречиле нежељену пошту и контролисале број приступа са стране стругача.

#3. Рендеровање на страни клијента

Ово је једна од највећих препрека за веб стругање. Модерне веб странице користе фронтенд оквире који омогућавају креирање једностраничних апликација. Већина ових апликација не приказује садржај на серверу. Уместо тога, садржај се генерише по потреби помоћу ЈаваСцрипт кода на страни клијента. Ово отежава стругачима да сазнају који је садржај веб странице. Да би се добио садржај, потребно је извршити ЈаваСцрипт на страни клијента.

вдзвдз АПИ

АПИ за веб стругање решава већину изазова са којима се суочавате приликом веб стругања, јер све ради за вас. Хајде да истражимо вдзвдз АПИ и видимо како га можете користити за веб стругање.

вдзвдз АПИ има једноставан процес у три корака:

  • Наведите УРЛ за стругање
  • Дефинишите опције конфигурације
  • Преузмите податке

АПИ може извршити стругање веб странице за вас, а затим вратити необрађене ХТМЛ податке као стринг или у ХТМЛ датотеци којој се може приступити путем линка, на начин који вама највише одговара.

Коришћење АПИ-ја

У овом упутству научићете како да користите вдзвдз АПИ користећи Node.js – ЈаваСцрипт окружење за извршавање. Пре него што наставите, инсталирајте Node.js на свој систем уколико га већ немате.

  • Покрените команду `npm init -y` у терминалу у тренутном фолдеру. Ово ће креирати `package.json` датотеку.
  • У датотеци `package.json`, промените вредност кључа „main“ у `index.mjs` ако је другачија. Такође можете додати кључ „type“ и поставити његову вредност на „module“.
{
  “type”: “module”
}
  • Додајте зависност под именом `axios` покретањем команде `npm i axios` у терминалу. Ова зависност нам помаже да вршимо ХТТП захтеве до одређених крајњих тачака.
  • Ваша `package.json` датотека би требала изгледати отприлике овако:
{
  "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"
  }
}
  • Увезите `axios` у датотеку `index.mjs` на следећи начин. Користи се кључна реч `import` јер је ово ЕС модул. Да је датотека CommonJS, користила би се кључна реч `require`.
import axios from ‘axios’
  • Основни УРЛ за све наше захтеве ка вдзвдз АПИ-ју је исти за сваку крајњу тачку. Дакле, можете га сачувати у константи.
const baseUrl="https://api.techblog.co.rs.com"
  • Наведите УРЛ са којег желите да преузмете податке.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Креирајте асинхрону функцију и иницијализујте `axios` унутар ње.
async function getData() {
    const res = await axios({})
    return res
}
  • У опцијама `axios` конфигурације, потребно је дефинисати метод као „post“, УРЛ са крајњом тачком, заглавље под називом `x-api-key` чија ће вредност бити АПИ кључ који обезбеђује вдзвдз, и на крају, објекат са подацима који ће бити послат на вдзвдз АПИ. Свој АПИ кључ можете добити на dash.wdzwdz.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
    }
})
  • Објекат са подацима садржи следеће параметре:
    • `url`: УРЛ веб странице коју треба стругати.
    • `output`: Формат у којем се подаци враћају, или као „inline“ стринг или у ХТМЛ датотеци. Подразумевана вредност је „inline“ стринг.
    • `device`: Тип уређаја на којем желите да се отвори веб страница. Прихвата три вредности: „desktop“, „mobile“ и „tablet“. Подразумевана вредност је „desktop“.
    • `renderJS`: Логичка вредност која одређује да ли желите да се изврши ЈаваСцрипт код. Ова опција је корисна када се суочавате са рендеровањем на страни клијента.
  • Позовите асинхрону функцију и преузмите податке. Можете користити ИИФЕ (Immediately Invoked Function Expression).
(async () => {
    const data = await getData()
    console.log(data.data)
})()
  • Одговор ће изгледати отприлике овако:
{
  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.techblog.co.rs.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Парсирање ХТМЛ-а

За парсирање ХТМЛ-а, можете користити npm пакет под именом `node-html-parser` и такође извући податке из ХТМЛ-а. На пример, ако желите да извучете наслов веб странице, можете урадити следеће:

import { parse } from ‘node-html-parser’
const html = parse(htmlData) // htmlData је необрађени html string који добијате од techblog.co.rs АПИ-ја.

Алтернативно, ако вам требају само метаподаци са веб локације, можете користити вдзвдз АПИ крајњу тачку за метаподатке. Не морате чак ни да анализирате ХТМЛ.

Предности коришћења вдзвдз АПИ-ја

Код једностраничних апликација, садржај се често не приказује на серверу, већ га прегледач приказује помоћу ЈаваСцрипт-а. Дакле, ако извршите стругање оригиналног УРЛ-а без приказивања ЈаваСцрипт кода потребног за приказ садржаја, не добијате ништа осим контејнер елемента без садржаја унутар њега. Дозволите да вам покажем пример.

Ево демо веб странице направљене помоћу React-а и Vite-а. Извршите стругање ове странице помоћу вдзвдз АПИ-ја са опцијом `renderJS` постављеном на `false`. Шта сте добили?

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

Постоји само root контејнер без садржаја. Овде на сцену ступа опција `renderJS`. Сада покушајте да извршите стругање исте странице са опцијом `renderJS` постављеном на `true`. Шта добијате?

<body>
    <div id="root">
        <div class="App">
            <div>
                <a href="https://vitejs.dev" target="_blank">
                    
                </a>
                <a href="https://reactjs.org" target="_blank">
                   
                </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>

Још једна предност коришћења вдзвдз АПИ-ја је што вам омогућава коришћење ротирајућих проксија, чиме осигуравате да веб страница неће блокирати вашу ИП адресу. Функција проксија је доступна у оквиру премиум плана вдзвдз АПИ-ја.

Закључак

Коришћењем АПИ-ја за веб стругање, можете се фокусирати на податке које желите да извучете, без превише техничких потешкоћа. Поред тога, вдзвдз АПИ пружа и друге функције, као што су провера неисправних линкова, стругање метаподатака, статистику учитавања веб странице, прављење снимака екрана, провера статуса сајта и још много тога. Све на једном АПИ-ју. Погледајте званичну документацију вдзвдз АПИ-ја за више информација.