CoderCastrov logo
CoderCastrov
Nepse

Парсинг данных о ценах на сегодняшний день на бирже NEPSE в Непале

Парсинг данных о ценах на сегодняшний день на бирже NEPSE в Непале
просмотров
2 мин чтение
#Nepse

Парсинг данных с веб-сайта может быть довольно трудоемкой задачей. Я знаю, что это может быть утомительно. Но я нашел решение для этой проблемы, которое также опубликовано здесь. В этой статье мы будем парсить данные о ценах на сегодняшний день на бирже 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

Вы можете получить исходный код здесь.

Загляните на мой блог.

Счастливого кодинга...