Рубрики
Без рубрики

Начало работы с Seb Scraping в Node.js

Начало работы с Basic Web Scraping в Node.js

Автор оригинала: Dushyant Rathore.

Веб-соскоб – соскреб данных, используемый для извлечения данных с веб-сайтов. Web Scraping Software может получить доступ к сети World Wide напрямую, используя протокол передачи HyperText, или через веб-браузер. Хотя веб-соскоб можно выполнить вручную пользователем программного обеспечения, термин обычно относится к автоматизированным процессам, реализованным с использованием бота или веб-сканера. В настоящее время соскоб играет неотъемлемую роль в дизайне веб-API и т. Д.

  • Сделайте запрос на веб-страницу, чтобы соскрести данные.
  • Извлечение тела веб-страницы.
  • Понимание структуры тегов/элементов, которые вы хотите извлечь из веб-страницы и вносить изменения в код для перемещения дома соответственно.

Проект с открытым исходным кодом Node.js является одним из самых популярных средов выполнения и имеет кучу функций, которые позволяют легко развивать потрясающие вещи с ним.

Манипулирующий DOM внутри веб-браузера – это то, что JavaScript и библиотеки, такие как jQuery, действительно хорошо, и поэтому он имеет большой смысл писать веб-сценарии Scraping в Node.js, поскольку мы можем использовать много методик, которые мы знаем из манипуляций DOM в Клиентский код для веб-браузера.

Чтобы начать работу с помощью Web Scraping, используя Node.js, нужно настроить следующие вещи: –

Cheerio – это быстрый, гибкий и постная реализация Core jQuery, разработанная специально для сервера. В Cheerio мы используем селекторы для выбора тегов HTML-документа. Синтаксис селектора был заимствован в jQuery. Ниже приведен частичный список доступных селекторов:

  • $ (“*”) – выбирает все элементы
  • $ (“# первая”) – выбирает элемент с
  • $ (“. Intro”) – выбирает все элементы с
  • $ (“div”) – выбирает все элементы
  • $ (“h2, div, p”) – выбирает все

    ,
    , элементы

  • $ (“Li: firf”) – выбирает первый элемент

Для основного примера мы будем соскабливать количество коммитов на Страница GitHub Cheerio Отказ Веб-страница с структурой DOM показана ниже:

Hario.png.png.

Как вы можете наблюдать от изображения, количество коммитов существует в промежуток элемент, имеющий класс Num Text-подчеркивает Отказ Этот элемент охвата – это ребенок A (якорь) Тег, который в свою очередь, это ребенок Ли тег, имеющий класс `комбинирует”. Следующий код загружает необходимые пакеты и извлекает количество коммитов из веб-страницы.

// Load the necessary packages
var request = require("request");
const $ = require('cheerio');

//URL to scrape
var url = "https://github.com/cheeriojs/cheerio";

//Make the request
request(url, function(error, response, body){
    if(error){
        console.log(error);
    }
    else{
        console.log("Response : " + response);
        console.log("Response Status : " + response.status);
        //console.log("Body : " + body);
        
        //Extract the children of the list tag having class commits
        var li = $('li.commits', body)[0]["children"];
        
        //Loop over to extract the anchor tag
        for(var i = 0; i < li.length; i++){
        	//Check for anchor tag/type
            if(li[i]["type"] == "tag" && li[i]["name"] == "a"){
                for(var j = 0; j < li[i]["children"].length; j++){
                    //Check for the span having the class num text-emphasized
                    if(li[i]["children"][j]["name"] == "span"){
                        if(li[i]["children"][j]["attribs"]["class"] == "num text-emphasized"){
                            //console.log(li[i]["children"][j]);
                            console.log("Commits : " + li[i]["children"][j]["children"][0]["data"].trim());
                        }
                    }
            }
        }

    }
}})

Теперь мы пройдемся через секции фрагмента кода.

  • Начальная часть кода импортирует пакеты Запрос и Cheerio которые жизненно важны для соскоба.
  • Далее мы храним URL, чтобы соскрести в VAR URL Отказ После этого мы сделаем запрос к URL-адресу, используя модуль запроса и проверяю ошибку/ответ и обрабатывать ее соответственно в двух отдельных блоках (1-й блок для ошибки и 2-й блок для Craping Code).
  • В соскобке мы сначала извлеките детей Ли тег, имеющий класс совершает Отказ Можно наблюдать список детей для Ли тег на рисунке ниже.

  • Однажды у нас есть список детей для Ли Тег готов, мы включаем каждый, чтобы выбрать, имеющее [«Тип»] и [«Имя»] Отказ
  • Как только мы извлекли Якорь Tag, мы выполняем ту же петлю по своему списку детей, чтобы найти промежуток Ребенок, имеющий класс Num Text-подчеркивает Отказ Это делается с использованием [«Имя»] и [«Класс»] [«Класс»] Отказ
  • Наконец, после того, как у нас есть промежуток Элемент с нами, мы извлекаем его данные и обрежьте его, чтобы удалить пробелы. Это оставляет нас с количеством коммиентов. Выход всего кода отображается в следующем фрагменте.
Cheerio_3.png.

Поздравляю! Вы просто написали свой первый веб-скребок, используя Node.js!