Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 13.01.2016
Сообщений: 183

Web scraping и переменные

12.02.2020, 10:11. Показов 704. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый ден, я начал изучать программирование и так как приходилось наблюдать за работой людей на nodejs, решил начать именно с него.

В качестве первой практической работы решил сделать небольшой парсер контента из одного динамически создаваемого сайта.

Но столкнулся с проблемой, с чем и прошу помощи.


JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
const puppeteer = require('puppeteer');
var file = require('file-system');
var fs = require('fs');
var SteamTotp = require('steam-totp');
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
 
 
 
let scrape = async () => {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
авторизация
    await page.goto('сайт');
    await page.waitFor(15000);
    await page.type('#steamAccountName', '');
   await page.type('#steamPassword','');
    await page.click('#imageLogin');
   await page.waitFor(5000);
   var code = SteamTotp.generateAuthCode('');
   await page.type('#twofactorcode_entry', (code));
 await page.click('#login_twofactorauth_buttonset_entercode > div.auth_button.leftbtn > div.auth_button_h3');
 
действия на сайте
   
 await page.waitFor('#user-nickname');
    console.log('Авторизация прошла успешно, устанавливаем фильтры')
    
    //////////////////////////////
    await page.waitFor(1000);
    await page.click ('#minimize-btn > i')
....
    await page.waitFor(5000);
 
 
 
 
    var result = await page.evaluate(() => {
      
      let data = [];
      let elements = document.querySelectorAll('#table-body > tr:nth-child(1) > td.copy-name');
 
      for (var element of elements){
         let title = element.innerText;
         data.push(title);
      }
 console.log(data);
 
      let priceDataLF = [];
      let elementspricelf = document.querySelectorAll('#table-body > tr:nth-child(1) > td:nth-child(7) > div.first-line > span');
 
      for (var element of elementspricelf){
        let pricelf = element.innerText;
        priceDataLF.push(pricelf);
      }
      console.log(priceDataLF);
 
      let priceDataCS = [];
      let elementspricecs = document.querySelectorAll('#table-body > tr:nth-child(1) > td:nth-child(9) > div.first-line > span');
      
      for (var element of elementspricecs){
        let pricecs = element.innerText;
        priceDataCS.push(pricecs);
      }
      console.log(priceDataCS);
 
      
 
      return data;
      
    });
    var loot = await browser.newPage();
    await loot.goto('https://loot.farm/ru/index.html');
    await loot.click('#userNoLogin > a');
    await loot.waitFor(2000);
    await loot.click('#imageLogin');
    await loot.waitFor(2000);
    await loot.click('#closeSubscribe');
    await loot.type('#searchBot',(data));
    await loot.waitFor(2000); 
 
    let cena = [];
    let elements = document.querySelectorAll('#a41e9293_0 > div.it_price.price100');
    for (var element of elements){
      let skinsprise = element.innerText;
      cena.push(skinsprise );
   }
 
   var raznica = (priceDataLF/cena-1)*100;
   console.log (raznica); 
 
 
};
scrape().then((value) => {
    console.log(value); // Получилось!
    fs.writeFileSync("hello.txt", (value));  
});
а вот и сам проблемный фрагмент. Дело в том что код парсит определенный параметр и ставит его в массив "data". (Сейчас это одно значение, но в будущем возможно будет больше, поэтому решил сразу ставить массив).

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
   var result = await page.evaluate(() => {
      
      let data = [];
      let elements = document.querySelectorAll('#table-body > tr:nth-child(1) > td.copy-name');
 
      for (var element of elements){
         let title = element.innerText;
         data.push(title);
      }
 console.log(data);
 
      let priceDataLF = [];
      let elementspricelf = document.querySelectorAll('#table-body > tr:nth-child(1) > td:nth-child(7) > div.first-line > span');
 
      for (var element of elementspricelf){
        let pricelf = element.innerText;
        priceDataLF.push(pricelf);
      }
      console.log(priceDataLF);
 
      let priceDataCS = [];
      let elementspricecs = document.querySelectorAll('#table-body > tr:nth-child(1) > td:nth-child(9) > div.first-line > span');
      
      for (var element of elementspricecs){
        let pricecs = element.innerText;
        priceDataCS.push(pricecs);
      }
      console.log(priceDataCS);
 
      
 
      return data;
      
    });
    var loot = await browser.newPage();
    await loot.goto('https://loot.farm/ru/index.html');
    await loot.click('#userNoLogin > a');
    await loot.waitFor(2000);
    await loot.click('#imageLogin');
    await loot.waitFor(2000);
    await loot.click('#closeSubscribe');
    await loot.type('#searchBot',(data));
    await loot.waitFor(2000); 
 
    let cena = [];
    let elements = document.querySelectorAll('#a41e9293_0 > div.it_price.price100');
    for (var element of elements){
      let skinsprise = element.innerText;
      cena.push(skinsprise );
   }
И в конце концов, когда в итоге мне нужна мое значение, которое мы парсили выше, вот в этом фрагменте код выдает ошибку.
data is not defined
JavaScript
1
await loot.type('#searchBot',(data));
В силу малого опыта не могу понять в чем у меня ошибка, я понимаю, что для кода эта значение неизвестно, но не понимаю почему, надеюсь на вашу поддержку, заранее спасибо за ответ!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.02.2020, 10:11
Ответы с готовыми решениями:

HtmlUnit financial website web scraping
Нужна помощь с вытаскиванием таблицы из сайта: https://www.cyberforum.ru/web-mastering/thread1553491.html ...

Xpath and Scraping
Вот страница http://econpy.pythonanywhere.com/ex/001.html хочу получить два списка,закупщик и цена, есть несколько вопросов, как...

Выбор django или Scraping + Data Mining
Здравствуйте. Усилено изучаю пайтон. Прошел момент практического выбора чем именно заняться, из двух направлений, и насколько они...

1
 Аватар для arava
340 / 135 / 70
Регистрация: 30.06.2014
Сообщений: 717
16.02.2020, 17:22
Цитата Сообщение от FreyTube Посмотреть сообщение
await loot.type('#searchBot',(data));
JavaScript
1
await loot.type('#searchBot',(result));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2020, 17:22
Помогаю со студенческими работами здесь

Внутриблочные переменные не могут иметь те же имена, что и переменные из блока верхнего уровня
program matr; uses crt; const n = 5; m = 5; var

Создать программу обработки массивов структур используя структурные переменные и переменные типа объеденения
Создать массив структур, каждая из которых состоит из следующих елементов: факультет, курс, группа, фамилия студента и екзаменационная...

Почему в локальном классе доступны финальные переменные или переменные инициализированные при объявлении
Добрый вечер. Объясните пожалуйста, почему в локальном классе могут использоваться только финальные переменные или переменные которые были...

Запись из формы данных в переменные php файла, данные из переменные используются в других файлах сайта
Всем привет! Ребят, подскажите пожалуйста! Есть один файл с обычной html формой, в которой обычные данные (фио, вэб-ссылка, контактные...

Переменные экземпляра, класса, константы и переменные readonly
Как эту задачу записать в C#? Переменные экземпляра, класса, константы и переменные readonly: – Ф.И.О., – должность, – базовый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru