- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте. Задам несколько вопросов:
1. В Firebug можно копировать путь Xpath наведя мышь на определенный элемент, также есть и Firepath(дополнение к Firebug) в нем тоже можно копировать путь Xpath. И почему то их пути отличаются, почему?
2. В php пишу следующий код:
$dom = new DOMDocument();
@$dom->loadHTML($content);
//echo $dom->saveHTML(); Все выводит
$xpath = new DomXPath($dom);
$elements = $xpath->query(".//*[@id='content']/div[1]/div[1]/div[2]/ul/li[1]");
if ($elements!=null)
{
foreach ($elements as $e)
{
echo $e->nodeValue;
}
}
echo $e->nodeValue; Выводит то что нужно, при этом путь .//*[@id='content']/div[1]/div[1]/div[2]/ul/li[1] копировался c Firepath.
Если же копировать путь Xpath с Firebug и до того же элемента так: /html/body/form/div[3]/div[4]/div/div[3]/div/div/div[2]/ul/li то echo $e->nodeValue; ничего не выводит, почему?
Вроде бы пока все, спасибо.
Конкретно за ваш случай не скажу, но в firebug'е показывает уже интерпретированный браузером html (например, он может добавлять tbody к таблицам, хотя в ответе сервера их нет).
Плюс к одному элементу можно, как правило, обратиться разными способами, особенно если у его родителей есть атрибуты id,class.
1. В Firebug можно копировать путь Xpath наведя мышь на определенный элемент, также есть и Firepath(дополнение к Firebug) в нем тоже можно копировать путь Xpath. И почему то их пути отличаются, почему?
когда firefox строит свое дерево, он дополняет некоторые пропущенные верстальщиком теги. TBODY наиболее часто встречается.
При обработке того же html из php дополнения не происходит. Так что смотри в код и экспериментируй.
Кроме firepath есть xpather http://xpath.alephzarro.com/. Мне больше нравится.
Для чего тогда вообще сделали в Firebug копировать пути Xpath, если они в php не работают?
И почему тогда в Firepath пути в php работают хорошо? В чем фокус?
ну вот такая вот особенность.
в других вариантах верстки странички все будет работать нормально.
netwind, Такую особенность явно просто так не делали. :)
Народ, может еще кто ответит на предыдущий вопрос по конкретнее? Интересно просто.
ну так если в браузере просто не хранится другого варианта дерева, кроме исправленного, то какое же еще выражение получится? firefox вот уже много лет ведет неравную битву с потреблением памяти, а ты хочешь чтобы они еще и дерево дополнительное хранили.
если кто-то знает браузер или способ быстро выделять xpath без достроенных тегов - расскажите очень полезно было бы.
netwind, Просто я не понимаю зачем в Firebug сделали опцию копировать путь Xpath, если он один фиг не работает в php, для чего? И странно то, что путь от firepath работает, ведь он то тоже берет все из построенного дерева браузером.
Garf, все там работает и в firebug тоже. это сделали для других нормальных случаев верстки.
Ты вообще пытался изучать xpath или по гуглу программы пишешь? сравнивал эти два выражения?
Выражение полученное в firepath начинающееся с символов "//" - вообще другое по смыслу. оно пропустит достроенные теги и приведет тебя к нужной выборке.
выражение от firebug - полное от корня дерева и строгое не пропускающее ни одного тега, в том числе и достроенных.
dom-парсер в php вообще не знает зачем нужны эти теги и зачем может понадобиться их дополнять. Он просто работает с html как xml.
сейчас проверил этот firepath - не особо удобно в качестве инструмента для парсинга сайтов, когда нужно выдирать не один элемент, а наборы элементов. но выражения строит хорошие.
и, кстати, там есть опция Generate absolute XPath - будет выдавать точно такое же нерабочее в php выражение как и в firebug.
Для чего тогда вообще сделали в Firebug копировать пути Xpath, если они в php не работают?
И почему тогда в Firepath пути в php работают хорошо? В чем фокус?
Первый раз слышу мнение, что функция копирования пути нужна для пхп ))
netwind,
С этим я согласен.
Тоже соглашусь, так как протестировал и не работает.
На нескольких сайтах попробовал абсолютные пути Xpath с файрбага и все равно не работает. Для какой верстки "нормальной" это сделано я хз. Все равно не ясно, зачем в Firebug и Firepath сделан абсолютный путь Xpath. То что Firepath строит другие пути, то это радует, потому, что это работает. И тоже напрашивается вопрос, почему абсолютный путь в пхп не работает, а другой путь работает, хоть по идеи браузер сам строит свой дом?