Уеб скрапирането е процес на извличане на данни от HTML кода на уебсайт. Може да бъде мощен инструмент за анализ на данни, но може да бъде и източник на правни проблеми, ако не се направи правилно. В тази публикация в блога ще обсъдим как да скрейпваме чрез чист JavaScript и функцията async/await.

  1. Първо, създайте функция, която ще съдържа вашата логика за изтриване. Тази функция трябва да бъде маркирана като async, за да можете да използвате ключовата дума await вътре в нея.
async function scrapeData() {}

2. Във функцията използвайте функцията fetch(), за да изпратите GET заявка до уебсайта, който искате да изчерпите. Функцията fetch() връща обещание, така че трябва да използвате ключовата дума await, за да изчакате отговора.

const response = await fetch("http://books.toscrape.com/"); 
// you can use any other url instead of "http://books.toscrape.com/"

3. След като получите отговора, можете да получите достъп до HTML кода на уебсайта, като извикате метода text() на обекта за отговор. Това също връща обещание, така че трябва отново да използвате ключовата дума await.

const html = await response.text();

4. Вече можете да използвате DOMParser(), за да анализирате HTML и да изберете елементите, които искате да изтриете.

const parser = new DOMParser();
const doc = parser.parseFromString(html, "text/html");

5. След като имате анализирания HTML, можете да използвате querySelectorAll() или querySelector(), за да изберете елементите, които искате да изтриете.

const bookTitles = doc.querySelectorAll('h3 a');

6. След като сте избрали елементите, можете да извлечете данните, от които се нуждаете, като използвате свойството textContent.

const bookTitle = bookTitles.textContent;
console.log(bookTitle);

7. И накрая, можете да използвате извлечените данни, както желаете, например да ги съхранявате в база данни или да ги използвате за актуализиране на потребителския интерфейс

storeData(bookTitle)

Пълният пример за уеб скрапинг с помощта на чист JavaScript и async/await:

async function scrapeData() {
    try {
        const response = await fetch("http://books.toscrape.com/");
        const html = await response.text();
        const parser = new DOMParser();
        const doc = parser.parseFromString(html, "text/html");
        const bookTitles = doc.querySelectorAll('h3 a');
        bookTitles.forEach(function(title) {
            const bookTitle = title.textContent;
            console.log(bookTitle);
            storeData(bookTitle);
        });
    } catch (error) {
        console.log(error);
    }
}

function storeData(data) {
    // code to store data in database or update UI
}

scrapeData();

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

В тази публикация в блога ще обсъдим как да скрейпваме с помощта на чист JavaScript и функцията async/await.

Важно е да се отбележи, че уебсайтът, който ще използваме за целите на демонстрацията, „http://books.toscrape.com/', изрично позволява уеб скрапиране на техния уебсайт, както е посочено в техните условия за обслужване и за образователни само за целите. Ваша отговорност е да гарантирате, че всеки уебсайт, от който изчерпвате, го позволява, преди да го направите, и да уважавате всички искания за спиране на изчерпването на уебсайт.

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