Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Поиск DOM нужного объекта / 11 сообщений из 11, страница 1 из 1
01.02.2020, 21:47
    #39921367
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
Добрый день, спецы! Проблема в следующем:
Есть таблица на сайте, построенная из DIV. В ней каждая строка, DIV, в котором ячейки тоже из DIV до 4-й вложенности. И это надо парсить (Delphi+WebBrowser).
Я получаю ссылку на DIV строки, тут все просто, а далее, надо найти тег "a" с классом "link". Структура примерно такая:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<div class="row" id="row">
  <div class="aaa">
    <div class="bbb">
      <div class="ccc">
        <a class="link">Его и надо получить</a>
      </div>
    </div>
  </div>
</div>



Пробовал следующее
Код: javascript
1.
2.
3.
row.getElementsByTagName('a');//возвращает пустую коллекцию
row.getElementsByClassName('link')//возвращает пустую коллекцию
row.querySelector('a.link')//возвращает Null



В чем я ошибаюсь? Так найти нельзя? Тогда, как можно, и можно ли вообще? Точнее, можно через рекурсивный обход дочерних элементов, но хочется более "элегантно". Помогите!
...
Рейтинг: 0 / 0
01.02.2020, 21:54
    #39921369
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
LordGray,

Код: javascript
1.
document.querySelector('#row a')
...
Рейтинг: 0 / 0
01.02.2020, 22:01
    #39921370
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
вадя
LordGray,

Код: javascript
1.
document.querySelector('#row a')


Не совсем устраивает, т.к. в документе может быть до 1000 "row". Да еще и в каждом "row" по 2-3 "а". По этому, хочу поиск внутри определенного DIV и всех объектов, которые в нем.
...
Рейтинг: 0 / 0
01.02.2020, 22:02
    #39921371
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
LordGray,

Код: javascript
1.
row.getElementsByTagName('a')[0]



Код: javascript
1.
row.getElementsByTagName('a')[0]
...
Рейтинг: 0 / 0
01.02.2020, 22:03
    #39921372
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
LordGray
Не совсем устраивает, т.к. в документе может быть до 1000 "row".
row - это id - должен быть уникальным
...
Рейтинг: 0 / 0
01.02.2020, 22:06
    #39921373
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
LordGray,

Код: javascript
1.
row.getElementsByTagName('a')[0]


Код: html
1.
<a class="link">Его и надо получить</a>


это если только один row
...
Рейтинг: 0 / 0
01.02.2020, 22:24
    #39921375
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
Хотел объяснить попроще, но, видимо, запутал.
Строковые DIV, кроме класса, не имеют, ничего уникального. По этому, я по классу, получаю всю коллекцию этих DIV, и начинаю их в цыкле парсить. Т.е. у меня ЕСТЬ ссылка на интерфейс конкретного DIV, внутри которого куча всякого. Так вот, применяя
Код: html
1.
getElementsByTagName


к этому DIV, я получаю пустую коллекцию, т.к. "а" находится не прямо в строковом DIV а на глубине, до 4-й вложенности. Опыты показали, что туда, всякие "getElementsByXXX" не смотрят. А вот почему "querySelector" не находит, для меня загадка, так как на пробном упрощенном HTML файле, он смотрит и в дочерних элементах. Единственное, что приходит в голову, что "querySelector" не находит в оригинальном HTML, так как все дочерние/вложенные DIV имеют разные стили, а "querySelector" вроде связан с CSS.
К сожалению, знания по HTML/CSS поверхностные, по этому, может я не правильно понимаю проблему.
...
Рейтинг: 0 / 0
01.02.2020, 22:36
    #39921376
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
LordGray,

Код: javascript
1.
document.querySelectorAll('div.row a')
...
Рейтинг: 0 / 0
01.02.2020, 23:05
    #39921378
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
Мне не подходят методы объекта "document". Да, он вернет мне ВСЕ ссылки, но я их не смогу сопоставить с остальными данными, которые нужно получить из "ячеек", которые вставлены в "строковый" DIV.

Еще раз, мне надо найти объект(ы) по тегу или классу, не где-то там, на документе, а которые являются ДОЧЕРНИМИ (не обязательно напрямую, а может дочка-дочки-...) нужного объекта.

Может понятней будет, если приведу ссылку на одну из страниц , которые надо парсить. На приведенной странице, меня интересуют "Product" (название и ссылка, которая имеет класс "link"), и еще десяток колонок с характеристиками. Если я выберу ссылки по классу "link", даже из DIV определенного класса, я не смогу их сопоставить остальным данным. Кроме того, там есть ссылки с таким же классом, которые меня не интересуют (Package name). По этому, парсю "построчно": получил строковый "DIV" и в нем копаюсь
...
Рейтинг: 0 / 0
02.02.2020, 00:36
    #39921394
LordGray
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
Вот я балбес, попался, как начинающий. Первый "строковый" DIV, был "шапкой" таблицы, и в нем нет нужной ссылки. Вот мне все методы и возвращали то пустые коллекции, то Null. Не знаю, как всякие getElementsByXXX, а вот "querySelector" выбирает то, что мне надо. Остановился на нем, т.к. он намного гибче в условиях поиска.

Всем спасибо!
...
Рейтинг: 0 / 0
02.02.2020, 11:38
    #39921430
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск DOM нужного объекта
LordGray
Может понятней будет, если приведу ссылку на одну из страниц , которые надо парсить.
какая гадость.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Поиск DOM нужного объекта / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]