- Регистрация
- 09.10.2015
- Сообщения
- 3 916
- Благодарностей
- 3 875
- Баллы
- 113
Во-первых, конечно, спасибо за конструктор выражений XPath - вначале отнёсся к нему скептически (я руками в браузере их готовлю обычно), но попробовал и зашло (правда, хотелось бы чтоб пофиксили противный баг)!
А теперь ближе к телу:
А теперь ближе к телу:
- При генерации значений XPath часто в результирующем выражении есть элементы аля: "//div[1]".
Но на сколько я помню - в XPath нумерация элементов идёт как раз с 1, а не с 0. А это значит, что указание именно первого элемента - возможно лишено смысла, т.к. по дефолту будет браться именно первое совпадение. - Зачастую выражения получаются очень длинными. Может быть имеет смысл пытаться их сокращать за счёт проверки соответствия правильности нахождения необходимого элемента в DOM-дереве посредством прохождения дерева XPath с головы к ногам (реверсивно)?
То есть, если имеем XPath выражение аля:
//*[@id="blog"]/div[@class='row-fluid']/div[starts-with(@class,'span')]/div[@class='post']/div/h3[@class='title']
Вначале проверить соответствие необходимого элемента с ожидаемым через:
//h3[@class='title']
И если они не соответствуют, то пробовать:
//div/h3[@class='title']
И если снова не подходит, то потом пробовать:
//div[@class='post']/div/h3[@class='title']
... и так до нахождения минимально возможного выражения XPath (или если оно не будет найдено, то брать дефолтное длинное).
Последнее редактирование: