Nepse
Парсинг данных о ценах на сегодняшний день на бирже NEPSE в Непале
Table Of Content
Парсинг данных с веб-сайта может быть довольно трудоемкой задачей. Я знаю, что это может быть утомительно. Но я нашел решение для этой проблемы, которое также опубликовано здесь. В этой статье мы будем парсить данные о ценах на сегодняшний день на бирже NEPSE в Непале с помощью нашего любимого парсера - puppeteer. Чтобы узнать больше о puppeteer, вы можете посмотреть scraperspace. Итак, приступим к парсингу данных с Google Maps.
Установка
Вам необходимо установить puppeteer и nodejs на вашу систему. Вы можете установить библиотеку puppeteer с помощью следующей команды.
npm install -g puppeteer
После установки выполните следующие действия:
- перейдите на эту страницу
- Вы увидите данные о ценах на сегодняшний день на бирже NEPSE
- нам понадобится URL позже
Давайте напишем функцию для парсинга:
const puppeteer = require("puppeteer");
const fs = require("fs");
async function scraper(option: any) {
try {
// инициализация браузера
let browser = await puppeteer.launch({
args: ["--start-maximized"],
headless: false,
});
// открываем новую пустую страницу
let page = await browser.newPage();
// изменяем размер браузера
await page.setViewport({ width: 1366, height: 768 });
await page.goto(`http://www.nepalstock.com.np/main/todays_price/index/${option.code} `, {
waitUntil: "networkidle0",
});
// ожидаем полной загрузки страницы
await page.waitForSelector(".container", { visible: true });
const content = await page.evaluate(() => {
let rowList: any[] = [];
let rows = document.querySelectorAll("table tbody tr");
rows.forEach((row) => {
// объявляем данные, которые мы хотим спарсить
let record: {
Sn: string;
Traded_Companies: string;
No_Of_Transaction: string;
Max_Price: string;
Min_Price: string;
Closing_Price: string;
Traded_Shares: string;
Amount: string;
Previous_Closing: string;
Difference_Rs: string;
} = {
Sn: "",
Traded_Companies: "",
No_Of_Transaction: "",
Max_Price: "",
Min_Price: "",
Closing_Price: "",
Traded_Shares: "",
Amount:"",
Previous_Closing:"",
Difference_Rs: ""
};
// получаем текст каждого столбца строки и добавляем их в список
const tdList = Array.from(
row.querySelectorAll("td"),
(column) => column.innerText,
);
if (tdList.length >= 9) {
// добавляем данные в список
rowList.push({
Sn: tdList[0],
Traded_Companies: tdList[1],
No_Of_Transaction: tdList[2],
Max_Price: tdList[3],
Min_Price: tdList[4],
Closing_Price: tdList[5],
Traded_Shares: tdList[6],
Amount: tdList[],
Previous_Closing: tdList[8],
Difference_Rs:tdList[9]
});
}
});
return rowList;
});
// сохраняем результаты, создавая json-файл для каждого индекса
fs.writeFile(
`./ShareData/ShareData-${option.index}.json`,
JSON.stringify(content, null, 2),
(err: any) => {
if (err) {
console.log(err);
} else {
console.log(`Data of Stock Page-${option.index} Scraped`);
}
},
);
// закрываем браузер
await browser.close();
} catch (e) {
console.log(e);
}
}
let main = async () => {
// проходим по страницам с данными о ценах на акции
for (let i = 1; i <= 11; ++i) {
await Promise.all([
scraper({
code: i,
index: i,
}),
]);
}
};
main()
.then(() => {
console.log("Scraping Completed!");
})
.catch(() => {
console.log(`Failed due to exception - ${e}`);
});
Шаги для запуска
- В терминале в корневой папке выполните команду
npm install
, чтобы установить все необходимые пакеты - Выполните команду
npm start
, чтобы запустить скрипт - Чтобы просмотреть полученные данные, откройте файл
index.html
из папкиviews
Вы можете получить исходный код здесь.
Загляните на мой блог.
Счастливого кодинга...