Какво е уеб скрапинг защо се нуждаем от него и как го направихме

Под капака

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

Стратегията е проста, ще направя нещо ново в Node JS и ще продължа да споделям основна информация или това, което съм научил тук.

Как уча, отговорът е прост, Chat GPT и действителна документация.

Първата тема, която избрах, е уеб скрапирането, защото искам да създам нещо около него и има много приложения, които ще разгледам по-късно в тази история.

Въведение

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

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

Защо се нуждаем от уеб скрапинг?

Как ще го направим, може да се разбере много лесно чрез прилагане на обратно инженерство.

Ако кажа, че искате да извлечете данни или съдържание от уеб страница?

Как ще продължите като front-end разработчик?

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

Ето как се прави уеб скрапинг.

Ако искате да бъдете уеб скрепер, трябва да знаете какво са DOM елементи и какво е DOM и само основни знания ще работят.

Как да направим уеб скрапинг?

Логиката на изпълнението на уеб скрапинг е обяснена по-горе като това как е направено с помощта на скриптове.

  • Node JS axios npm извлича html файла, използвайки URL адреса
  • Ние итерираме DOM елементите на html файла с помощта на jQuery
  • Прочетете съдържанието на DOM елементите
  • Извлечете и запазете съдържанието

Разбира се, Node JS има тонове други библиотеки като Cheerio и Pupetter, които правят итерацията или изстъргването на мрежата безпроблемно.

Моят приятел препоръчва друг пакет, наречен Playwright, по-долу е основният примерен код за уеб скрапинг.

const playwright = require('playwright');

const vgmUrl = 'https://www.vgmusic.com/music/console/nintendo/nes';

(async () => {
  const browser = await playwright.chromium.launch();
  const page = await browser.newPage();

  await page.goto(vgmUrl);

  const links = await page.$$eval('a', elements => elements.filter(element => {
    const parensRegex = /^((?!\().)*$/;
    return element.href.includes('.mid') && parensRegex.test(element.textContent);
  }).map(element => element.href));

  links.forEach(link => console.log(link));

  await browser.close();
})();

За основно обяснение,

  • Първо дефинирахме URL адреса, който искаме да бракуваме
  • Стартирайте браузъра
  • Отворете новата страница в браузъра и отворете URL адреса на уебсайта
  • Филтрирайте връзките с помощта на регулярен израз и включва връзка, която съдържа само href със стойност .mid
  • Прочетете и запазете всички тези връзки
  • затворете браузъра

Простият и основен начин за премахване на връзки към уебсайтове, които имат определени атрибути като href, включва .mid низ и т.н.

Разбира се, можете да добавите още условия за филтриране на данни и четене на другите DOM елементи като входове, квадратчета за отметка, заглавия, надписи и т.н.

Пакети за уеб скрапинг

Javascript

  • Наздраве
  • Драматург
  • Кукловод

Python

  • Красива супа
  • Селен
  • Скрепи

Крайни случаи — Уебсайтове с имена на динамични класове

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

В този случай оставаме с определени опции, както е споменато по-долу

  1. Потърсете алтернативни атрибути: Ако името на класа се променя динамично, потърсете алтернативни атрибути като id, name, data-* и т.н., които остават постоянни във времето. Можете да използвате тези атрибути, за да идентифицирате елементите, които искате да изстържете.
  2. Използвайте CSS селектори: CSS селекторите могат да се използват за избиране на HTML елементи въз основа на техните атрибути. Можете да използвате селектори като contains, starts-with, ends-with и т.н., за да изберете елементи въз основа на техните динамични имена на класове.
  3. Използвайте регулярни изрази: Ако имената на динамичните класове следват определен модел, можете да използвате регулярни изрази, за да съответствате на шаблона и да изберете елементите.
  4. Използвайте инструмент за уеб скрапиране: Има много инструменти за уеб скрапиране като BeautifulSoup, Scrapy, Selenium и др., които могат да обработват имена на динамични класове. Тези инструменти имат вградени функции, които могат да избират елементи въз основа на техните атрибути, да съпоставят шаблони с помощта на регулярни изрази и т.н.
  5. Наблюдавайте уебсайта: Ако имената на динамичните класове се променят често, можете да наблюдавате уебсайта, за да идентифицирате моделите в промените. Това ще ви помогне да актуализирате съответно кода си за скрапинг.

Приложение

Извличането на данни има много предимства, както е дефинирано по-долу

  • Сравнение на цените между платформи за електронна търговия
  • Индексиране на данни
  • SEO анализ
  • Извличане на данни

… много повече

Данните са МАСЛОТО, така че откъдето и да ги вземем, това е МАСЛО или пари.

Печелете от Data Scraping

  • Продайте изчерпаните си данни
  • Правете инструменти за бракуване на уебсайтове и продавайте тези инструменти
  • Станете разработчик на скрап уебсайтове, на свободна практика или на пълен работен ден

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

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

Заключение

Извличането на данни е много полезно в много отношения, като личен разработчик можете да бракувате и филтрирате данни и да ги продавате, а като компания можете да анализирате SEO и да сравнявате цените на конкурентите.

Шаблон за пътна карта на Node JS — Изчерпателно ръководство от ниво за начинаещи до напреднали за Node JS



До следващия път, приятен ден, хора

Шри

„iHateReading“

Повече съдържание в PlainEnglish.io.

Регистрирайте се за нашия безплатен седмичен бюлетин. Следвайте ни в Twitter, LinkedIn, YouTube и Discord .

Интересувате ли се от мащабиране на стартирането на вашия софтуер? Вижте Circuit.