Как да скрейпвате уебсайт с помощта на pctechbg.net API за уеб скрапиране

Web scraping е процес за извличане на полезна информация от World Wide Web. По време на търсене в Google, уеб робот (бот), т.е. роботът, преминава през почти цялото съдържание в мрежата и избира това, което е подходящо за вас.

Тази идея, че информацията или знанието трябва да са достъпни за всеки, доведе до формирането на световната мрежа. Въпреки това данните, които търсите, трябва да бъдат разрешени за обществено ползване.

С какво е полезно уеб скрапирането?

Живеем в ерата на данните. Необработените данни могат да бъдат преобразувани в полезна информация, която може да се използва за по-голяма цел с помощта на уеб скрапинг. Може да се използва за анализиране и проучване на потребителите на продукт, за да се подобри продукта, с други думи, за създаване на обратна връзка.

Компаниите за електронна търговия могат да го използват, за да проучат ценовите стратегии на конкурентите и съответно да разработят свои собствени. Уеб скрапингът може да се използва и за прогнози за времето и новини.

Предизвикателства

#1. IP ограничение

Няколко уебсайта ограничават броя заявки, които можете да направите, за да получите данните от сайта в определен интервал от време, като открият вашия IP адрес или геолокация. Те правят това, за да предотвратят злонамерени атаки на техния уебсайт.

#2. Captcha

Разграничаването между истински човек и бот, който се опитва да получи достъп до уебсайта, е това, което всъщност правят captcha. Уебсайтовете го използват, за да предотвратят спама на уебсайта, както и да контролират броя на скрейперите на уебсайта.

#3. Изобразяване от страна на клиента

Това е една от най-големите пречки за уеб скрапърите. Съвременните уебсайтове използват фронтенд рамки, които могат да създават приложения от една страница. Повечето приложения с една страница нямат изобразено от сървъра съдържание. Вместо това те генерират съдържанието според нуждите, като използват javascript от страна на клиента. Това затруднява скреперите да разберат какво е съдържанието на дадена уеб страница. За да получите съдържанието, трябва да изобразите някакъв javascript от страна на клиента.

  Защо 2020 г. е идеалното време за преразглеждане на IRC

API на pctechbg.net

Приложният програмен интерфейс (API) за уеб скрапиране решава повечето от предизвикателствата, пред които е изправено извършването на уеб скрапинг, защото се справя с всичко вместо вас. Нека проучим pctechbg.net API и да видим как можете да го използвате за уеб скрапиране.

API на pctechbg.net има прост процес в три стъпки за вас:

  • Предоставете URL адрес за изчерпване
  • Предоставете някои опции за конфигурация
  • Вземете данните

Той може да изтрие уеб страницата вместо вас и след това да върне необработени HTML данни като низ или в HTML файл, който може да бъде достъпен чрез връзка, в зависимост от начина, по който работи за вас.

Използване на API

В този урок ще научите как да използвате pctechbg.net API с помощта на NodeJS – среда за изпълнение на JavaScript. Инсталирайте NodeJS на вашата система, ако не сте го направили, преди да продължите по-нататък.

  • Изпълнете командата npm init -y в терминала в текущата папка или директория. Той ще създаде файл package.json за вас.
  • Във файла package.json променете стойността на основния ключ на index.mjs, ако е нещо друго по подразбиране. Като алтернатива можете също да добавите тип ключ и да зададете стойността му равна на модул.
{
  “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, защото това е ES модул. Ако беше commonJS файл, щеше да е ключовата дума require.
import axios from ‘axios’
  • Базовият URL адрес за всички наши заявки към pctechbg.net API ще бъде един и същ за всяка крайна точка. Така че можете да го съхранявате в константа.
const baseUrl="https://api.pctechbg.net.com"
  • Посочете URL адреса, от който искате да изчерпите и да получите данните.
let toScrapeURL = "https://developer.mozilla.org/en-US/"
  • Създайте асинхронна функция и инициализирайте axios вътре в нея.
async function getData() {
    const res = await axios({})
    return res
}
  • В опциите за конфигуриране на axios трябва да посочите метода като post, URL адреса заедно с крайната точка, заглавка, известна като x-api-key, чиято стойност ще бъде API ключът, предоставен от pctechbg.net и накрая, обект с данни, който ще бъде изпратен към pctechbg.net API. Можете да получите вашия API ключ, като отидете на dash.pctechbg.net.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: URL адресът на уеб страница, която трябва да бъде изкопана.
    • изход: форматът, в който ви се представят данните, или вграден като низ, или в HTML файл. Вграденият низ е стойността по подразбиране.
    • устройство: типът устройство, на което искате да бъде отворена уеб страницата. Приема три стойности, „десктоп“, „мобилен“ и „таблет“, като „десктоп“ е стойността по подразбиране.
    • renderJS: булева стойност, за да укажете дали искате да изобразите javascript или не. Тази опция е полезна, когато се занимавате с изобразяване от страна на клиента.
  • Извикайте асинхронната функция и вземете данните. Можете да използвате IIFE (израз на незабавно извикана функция).
(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.pctechbg.net.com/tests/web-scraping/pbn0v009vksiszv1cgz8o7tu.html'
}

Разбор на HTML

За да анализирате HTML, можете да използвате npm пакет, наречен node-html-parser, както и да извличате данни от HTML. Например, ако искате да извлечете заглавието от уеб страница, можете да направите:

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

Като алтернатива, ако искате само метаданните от уебсайт, можете да използвате крайната точка на API за метаданни на pctechbg.net. Дори не е нужно да анализирате HTML.

  App Eater деинсталира множество приложения; Прави ги лесни за филтриране

Ползи от използването на pctechbg.net API

В едностраничните приложения съдържанието често не се изобразява от сървъра, вместо това се изобразява от браузъра с помощта на javascript. Така че, ако изтриете оригиналния URL адрес, без да изобразите javascript, необходим за изобразяване на съдържанието, не получавате нищо друго освен контейнерен елемент без съдържание в него. Нека ви покажа един пример.

Ето демо уебсайт, създаден с помощта на react и vitejs. Изчистете този сайт с помощта на pctechbg.net API с опцията renderJS, зададена на false. Какво получи?

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

Има само основен контейнер без съдържание. Това е мястото, където опцията renderJS влиза в действие. Сега опитайте да скрейпвате същия сайт с опцията renderJS, зададена на true. Какво получаваш?

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

Друго предимство от използването на pctechbg.net API е, че ви позволява да използвате ротационен прокси, така че да можете да гарантирате, че няма да настъпи IP блокиране от уебсайта. API на pctechbg.net включва прокси функцията в своя премиум план.

  Как да увеличите част от снимка на iPhone и iPad

Заключителни думи

Използването на API за уеб скрапиране ви позволява да се съсредоточите само върху сканираните данни без много технически проблеми. Освен това pctechbg.net API също така предоставя функции като проверка на неработещи връзки, мета изтриване, статистика за зареждане на уебсайтове, заснемане на екранни снимки, състояние на сайта и много други. Всичко това под един API. Вижте официалната документация на pctechbg.net API за повече информация.