Парсинг html страницы с помощью javascript

122
07 марта 2021, 15:40

Более или менее удалось разобраться в структуре страницы, та часть страницы, которая меня интересует выглядит вот так:

<tbody class="listing-item stat-publicapi stat-publicapi_type_listing i-bem stat-publicapi_js_inited listing-item_js_inited"
    <tr class="listing__row" //нужные данные здесь
    <tr class="listing__row" 
    <tr class="listing__row"

А первый тег tr состоит из

<td class="listing__cell listing__cell_type_thumb"
<td class="listing__cell listing__cell_type_summary" //Нужные данные здесь - Название и описание
<td class="listing__cell listing__cell_align_right listing__cell_type_price" // Здесь цена
<td class="listing__cell listing__cell_type_year" //здесь год выпуска
<td class="listing__cell listing__cell_type_km"// здесь пробег

Методом тыка удалось вытащить все данные оттуда с помощью:

var jsonArr = []; // array of Json structures
var lenghtStrings = document.getElementsByTagName('tbody');
for(i = 0, l = lenghtStrings.length; i < l; i++) {
    var currentString = lenghtStrings[i];
    console.log(currentString.innerText);
    obj.replace(/^\t, '');
    jsonArr.push(currentString.innerText);
    }
    document.write("<br>"+JSON.stringify(jsonArr)); 

Данные имеют такой вид:

["\t\nBMW S 1000 R\nNaked bike\n999 см3 (165 л.с.), рядное, 4 цилиндра, 4 такта, 6 передач, цепь, красный\n\t950 000 ₽\t\n2017\n\t\n3 500 км\n\t\n\n\nЛомоносовский проспект, Минская, Москва\n\n\n\n",...

И теперь к сути, есть 2 проблемы: 1) хотелось бы избавиться от всех табуляций , replace почему-то не помог

2) Вместе с нужной информацией парсится еще и реклама(спецпредложения), но я заметил, что у нее другой класс (но тег тоже tbody)

<tbody class="listing-special-sales"

Как все это исправить?

Upd: Что получается сейчас:

"\t\nHarley-Davidson Road King\nКруизер\n1 500 см3 (65 л.с.), v-образное, 2 цилиндра, 4 такта, 5 передач, ремень, красный\n\t\n600 000 ₽\n\t\n2001\n\t\n21 300 км\n\t\n\n\nМосква\n, \n1 час назад\n\n\n\n","Спецпредложения\nНазадВперед\nHonda CRF 1000L Africa Twin\n2018, 3 600  км\n999 000 ₽\nBMW F 700 GS\n2015, 836 256  км\n986 896 900 ₽\nKTM 350 SX F\n2014, 137  км\n250 000 ₽\nHarley-Davidson V-Rod\n2007, 25 430  км\n580 000 ₽\nHonda CB 1000\n2018\n1 099 000 ₽\nHarley-Davidson FXDR 114\n2019, 17  км\n1 750 000 ₽\nKawasaki Ninja 650\n2017, 9 800  км\n480 000 ₽\nHarley-Davidson Fat Boy\n2019, 20  км\n1 700 000 ₽\n\n","\t\nYamaha XVS 950\nЧоппер\n950 см3, v-образное, 5 передач, ремень, черный\n\t\n410 000 ₽\n\t\n2013\n\t\n14 000 км\n\t\n\n\nМосква\n, \n1 час назад\n\n\n\n",

Что хотелось бы получить:

[" Harley-Davidson Road King, Круизер, 1 500 см3 (65 л.с.), v-образное, 2 цилиндра, 4 такта, 5 передач, ремень, красный, 600 000 ₽, 2001, 21 300 км, Москва",
"Yamaha XVS 950, Чоппер, 950 см3, v-образное, 5 передач, ремень, черный, 410 000 ₽, 2013, 14 000 км, Москва"]

(Просто список всех данных, без рекламы и разделителей)

Upd2: Пробовал находить нужный класс:

var str = document.getElementsByClassName('listing-item stat-publicapi stat-publicapi_type_listing i-bem stat-publicapi_js_inited listing-item_js_inited');

Но получаю - undefined

READ ALSO
Разница между String() и + &#39;&#39;

Разница между String() и + ''

Есть ли разница между преобразованиями в строку:

99
Где в Google Sheets писать скрипт?

Где в Google Sheets писать скрипт?

Где в google sheets писать скрипт, который мог работать с ячейками, изменять данные и тп

123
Не работает import после транспиляции JSX в JS (ES6) [дубликат]

Не работает import после транспиляции JSX в JS (ES6) [дубликат]

Начал изучать React параллельно с JSВ своем коде использую препроцессор JSX

126