В этой статье я покажу вам, как вы можете делать соскабливание веб -сайта, используя кукол и Nodejs. Чтобы начать, мы должны сначала понять, что такое сеть, и как кукольник может помочь нам сделать это.
Интернет
Скраинг в Интернете – это процесс извлечения данных с веб -страниц. Он включает в себя получение веб -страницы и затем извлечение из нее данных. После извлечения данных вы можете делать все, что хотите с этими данными. Вы можете использовать это для API или сохранить это в файле CSV.
Кукловодитель
Кукольник-это библиотека Nodejs с открытым исходным кодом, разработанная Google. Он основан на Chromium, популярной версии Google Chrome. Кукловодитель запускает без головы по умолчанию, но может быть настроен на полную работу (без головы) Хром или хром. Это не только позволяет нам делать сети, но мы можем сделать гораздо больше с ним. Нравиться:
- Создание скриншотов веб -страниц.
- Генерация PDF.
- Автоматизируйте подачу формы, тестирование пользовательского интерфейса, вход клавиатуры и т. Д.
Давайте сделаем сериал
Чтобы начать, нам нужны Nodejs в нашей системе. Если у вас нет Nodejs, вы можете установить его, перейдя в Официальный сайт . Теперь создайте папку и назовите ее так, как хотите, и откройте ее в VSCODE. Откройте терминал и напишите следующую команду для инициализации папки проекта с помощью файла package.json:
npm init -y
Теперь создайте файл index.js. После этого запустите следующую команду для установки кукольного:
npm install --save puppeteer
Установка займет некоторое время, потому что она также установит хром. Так что будь терпелив.
Для этого конкретного руководства мы отказамся эта веб -страница : Чтобы все было просто, мы извлеките только заголовок и резюме с этой веб -страницы. Теперь откройте файл index.js и выполните эти шаги:
Шаг 1
Требуйте кукловода, чтобы мы могли его использовать.
const puppeteer = require("puppeteer");
Шаг 2
Создайте асинхронную функцию, чтобы мы могли использовать ключевое слово wawit. Это потому, что кукольник использует обещания.
async function scrap() {
}
scrap();
Мы напишем остальную часть кода в этой функции.
Шаг 3
Позвоните Puppeteer.launch (), чтобы запустить браузер.
const browser = await puppeteer.launch();
Шаг 4
Call Browser.newpage () для создания экземпляра страницы.
const page = await browser.newPage();
Шаг 5
Вызовите page.goto () и дайте URL -адрес веб -страницы, которую мы хотим отказаться от аргумента.
await page.goto("https://www.imdb.com/title/tt1013752/");
Шаг 6
Call Page.evaluate (). Это принимает функцию как аргумент. В этой функции мы можем выбрать любой элемент на веб -странице. В нашем случае мы выберем заголовок и резюме с этой веб -страницы. Перейти к этому веб -страница и откройте инструменты разработчика. Нажмите на инструмент осмотра (в левом верхнем углу), а затем нажмите на заголовок. Щелкните правой кнопкой мыши выделенный элемент на вкладке «Элементы», затем нажмите «Скопировать», а затем нажмите «Селектор копирования», чтобы скопировать его селектор CSS. Точно так же вы также можете скопировать селектор резюме. Теперь посмотрите на следующий код:
const data = await page.evaluate(() => {
const title = document.querySelector("#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1").innerText;
const summary = document.querySelector("#title-overview-widget > div.plot_summary_wrapper > div.plot_summary > div.summary_text").innerText;
return {
title,
summary
}
});
В приведенном выше коде мы выбрали заголовок и резюме, а затем сохранили внутренний текст в переменных (заголовок и резюме). После этого мы вернули объект (мы используем синтаксис Shorthand ES6), который содержит заголовок и резюме. Этот объект будет храниться в переменной данных. Точно так же вы можете выбрать любой элемент на веб -странице, и тогда все, что вы вернете из этой функции, будет сохранено в переменной данных.
Теперь, поскольку мы успешно извлекла данные, мы можем сделать с этим все что угодно. Мы можем сохранить его в файле CSV или использовать его для API.
Последний шаг
Вызовите Browser.Close (), чтобы закрыть браузер.
await browser.close();
Чтобы выполнить файл index.js. Напишите следующую команду в терминале:
node index.js
Так выглядит наш код:
const puppeteer = require("puppeteer");
async function scrap() {
// Launch the browser
const browser = await puppeteer.launch();
// Create an instance of the page
const page = await browser.newPage();
// Go to the web page that we want to scrap
await page.goto("https://www.imdb.com/title/tt1013752/");
// Here we can select elements from the web page
const data = await page.evaluate(() => {
const title = document.querySelector(
"#title-overview-widget > div.vital > div.title_block > div > div.titleBar > div.title_wrapper > h1"
).innerText;
const summary = document.querySelector(
"#title-overview-widget > div.plot_summary_wrapper > div.plot_summary > div.summary_text"
).innerText;
// This object will be stored in the data variable
return {
title,
summary,
};
});
// Here we can do anything with this data
// We close the browser
await browser.close();
}
scrap();
Вывод
В Интернете – это забавная вещь. У него так много вариантов использования. Есть некоторые другие библиотеки, которые вы можете использовать для сетевого соскоба. Тем не менее, кукольник облегчает это. Это не только позволяет нам выполнять интернет -соскабливание, но и есть другие вещи, которые мы также можем выполнить.
Если вы хотите связаться со мной, следуйте за мной на Twitter Анкет
Оригинал: “https://dev.to/shahmir049/web-scraping-with-puppeteer-and-nodejs-51en”