Здравствуйте уважаемая администрация!
Время от времени стыкаюсь с проблемой длительного поиска элемента на странице и/или с тем что его затруднительно искать в DOM дереве. Например чтобы найти вложеный в "div" с классом "wraper" элемент "span" с текстом "ZZ" и в нем вложенный элемент "b" надо:
1) найти "$els = $tab->FindElementsByAttribute("div", "class", "wraper", "text");";
2) перебрать все найденые div'ы в поисках тех кто содержит нужные span'ы:
for($i = 0; $i < $els->Count; $i++) {
$buffer = $els->GetByNumber($i)->FindChildrenByAttribute("span", "InnerText", "ZZ", "text");
$els2 = $els2->Add($buffer);
}
3) И потом еще раз повторить пункт 2, но уже в поисках элемента "b"
В то же время в CSS селекторе это выглядит так: "div.wraper span:contains('ZZ') b". Стоит отметить что CSS селектор очень быстрый, как по мне в разы быстрее существующих методов. И (это мои размышления, поскольку полноценным програмистом я себя не считаю) CSS селектор должен возвращать объект на подобии HtmlElement или колекции таких объектов.
Благодарю за внимание! С уважением, Олег.
Время от времени стыкаюсь с проблемой длительного поиска элемента на странице и/или с тем что его затруднительно искать в DOM дереве. Например чтобы найти вложеный в "div" с классом "wraper" элемент "span" с текстом "ZZ" и в нем вложенный элемент "b" надо:
1) найти "$els = $tab->FindElementsByAttribute("div", "class", "wraper", "text");";
2) перебрать все найденые div'ы в поисках тех кто содержит нужные span'ы:
for($i = 0; $i < $els->Count; $i++) {
$buffer = $els->GetByNumber($i)->FindChildrenByAttribute("span", "InnerText", "ZZ", "text");
$els2 = $els2->Add($buffer);
}
3) И потом еще раз повторить пункт 2, но уже в поисках элемента "b"
В то же время в CSS селекторе это выглядит так: "div.wraper span:contains('ZZ') b". Стоит отметить что CSS селектор очень быстрый, как по мне в разы быстрее существующих методов. И (это мои размышления, поскольку полноценным програмистом я себя не считаю) CSS селектор должен возвращать объект на подобии HtmlElement или колекции таких объектов.
Благодарю за внимание! С уважением, Олег.