С Новым годом! Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 0
Регистрация: 01.12.2018
Сообщений: 29

Как спарсить значения по одинаковому классу только из 1 таблицы из 2?

04.02.2019, 19:49. Показов 1639. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте. Изучаю js около недели. Пишу для себя парсер для сайта "https://www.hltv.org/". Возникла проблема когда я пытаюсь вытащить строку в таблице "Head to head". К примеру вот тут - "https://www.hltv.org/matches/2330694/3dmax-vs-havu-united-masters-league". Мне нужно вытащить 2 строчки - "16 - 7" и "10 - 16", это результаты матчей между текущими командами. Их можно найти по классу .result, но по этому же классу находятся матчи с другими командами (выше). Я попытался с конца собирать значения (при этом надеясь, что команды до этого наиграли хотя бы 5 матчей, иначе скрипт брал значения из другой таблицы), но это работает не для всех. Как сузить поиск в jQuery?

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
//Функция которая по ссылке на матч собирает информацию о 
    //матчах между текущими командами и возвращает коэфицент разницы в силе
    //между командами (против друг друга)
    function HeadToHead(url)
    {
        var WinsAndLoses = [0,0,0]; //массив содержащий победы, ничьи и поражения
        var j = 0;
        var winningRounds1 = 0; //кол-во выигранных раундов у 1 команды над 2
        //Загружаем по ссылке страницу и заносим в каждый элемент
        //массива победы, ничьи и поражения 1 команды над 2
        $.ajax(url).done(function(data){            
                for(j = 0; j < 3; j++){
                    WinsAndLoses[j] = $(data).find(".bold")[j].innerText;
                    console.log(WinsAndLoses[j] + ' Значение колонки под номером ' + (j+1) + ' ссылка ' + url);
                }
                
                var resultLength = $(data).find(".result").length; //кол-во матчей (длина массива таблицы)
                console.log('кол-во классов result ' + resultLength);
                var roundsLine;
                
                /*Костыль. Предполагается, что у каждой команды уже было до этого по 5 матчей 
                (не работает для новых команд). Узнаем сколько классов result (включены "против других команд"
                и "против друг друга")*/
                for(j = 0; j < (resultLength-10); j++){
                    roundsLine += $(data).find(".result")[resultLength - j + 1].innerText;
                }
                //console.log('выигранные раунды 1 команды = ' + winningRounds1);
        });
    }
Добавлено через 47 минут
Ой, там в 25-строке не "+1", а "- 1 " иначе выходит за пределы массива классов result
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.02.2019, 19:49
Ответы с готовыми решениями:

Парсиг Jsoup. Как спарсить не только title но и дату с ссылкой на новость ? У меня получается только title
Получается спарсить и добавить в listview только title . А мне нужно спарсить еще и дату с url Если по отдельности как ниже...

Просуммировать по одинаковому значению из другой таблицы
Нужно просуммировать по одинаковому значению из другой таблицы сам запрос: declare @back_date datetime; SET...

Как спарсить только определенную часть кода
Допустим спарсил часть кода, как сделать чтобы сохранялась только часть текста, а остальное оставалось как шаблон? 'x_reg_id':...

2
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
04.02.2019, 20:06
Лучший ответ Сообщение было отмечено ProSkater12 как решение

Решение

ProSkater12,
JavaScript
1
Array.from(document.querySelectorAll('.head-to-head-listing .result'), e => [...e.children].forEach(el => console.log(el.textContent)))
Миниатюры
Как спарсить значения по одинаковому классу только из 1 таблицы из 2?  
1
1 / 1 / 0
Регистрация: 01.12.2018
Сообщений: 29
04.02.2019, 20:17  [ТС]
Спасибо, сделал по своему. Запутался в синтаксисе, делал по другому, не получалось. заменил
JavaScript
1
var resultLength = $(data).find(".result").length; //кол-во матчей (длина массива таблицы)
на

JavaScript
1
var resultLength = $(data).find('.head-to-head-listing .result').length; //кол-во матчей (длина массива таблицы)
Теперь берется только из той таблицы, которая мне нужна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.02.2019, 20:17
Помогаю со студенческими работами здесь

Как указать поиск только по одному классу BeautifulSoup
find_all('span', {&quot;class&quot;:&quot;c-events-scoreboard__cell&quot;}) ищет все span в которых есть класс c-events-scoreboard__cell, как сделать чтобы...

Как спарсить все значения сразу?
&quot;name&quot;:&quot;ТЕСТ1&quot;,&quot; &quot;name&quot;:&quot;ТЕСТ2&quot;,&quot; &quot;name&quot;:&quot;ТЕСТ3&quot;,&quot; preg_match(&quot;!\&quot;name\&quot;:\&quot;(.*?)\&quot;,\&quot;!si&quot;,$result,$wallet); Надо спарсить сразу все...

Как вывести найденные значения в виде таблицы. Можно ли и как зарисовать эти значения на графике?
Здравствуйте! Помогите пожалуйста, плохо понимаю что делать надо. Вот есть код, но я могу увидеть значения только при нажатии на кнопку, а...

Как вывести данные по одинаковому ID?
Есть таблица в которой находятся города по краям и республикам, соответственно каждой группе присвоен одинаковый id, например, в столбце...

Как при выборе значения из ComboBox1 выдать значения в ComboBox2, свойственные только для значения из ComboBox1
Подскажите пожалуйста вот еще что: Как организовать работу двух ComboBox, так чтобы при выборе определенного значения из ComboBox1,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru