Парсинг html через xmlstarlet ?

Для чайников и не только
Аватара пользователя
ZigZag
Сообщения: 286
Зарегистрирован: 28 окт 2015, 04:43

Сообщение ZigZag » 29 авг 2019, 05:00

В ветке по сборке пакетов, где я просил собрать xidel для парсинга html, мне предложили использовать xmlstarlet, но что-то не выходит каменный цветок. На десктопе через xidel получаю href тега link со странички https://www.ntv.ru/video/1525959/ через команду

Код: Выделить всё

xidel -se "//link[@itemprop='embedUrl']/@href" "https://www.ntv.ru/video/1525959/"
//www.ntv.ru/embed/1525959/
пробую это же воспроизвести через xmlstarlet, взяв полный xpath того же параметра (как использовать условный в xmlstarlet я не понял). Итак, пробую

Код: Выделить всё

curl -s "https://www.ntv.ru/video/1525959/"|xmlstarlet sel -N x="http://www.w3.org/1999/xhtml" -t -c '/x:html/x:body/x:div[11]/x:div[1]/x:div[1]/x:link[2]'
ругается на
-:2.12: xmlns: URI //www.w3.org/1999/xhtml is not absolute
ОК, выправляем запрос

Код: Выделить всё

curl -s "https://www.ntv.ru/video/1525959/"|sed 's|//www.w3.org|http://www.w3.org|g'|xmlstarlet sel -N x="http://www.w3.org/1999/xhtml" -t -c '/x:html/x:body/x:div[11]/x:div[1]/x:div[1]/x:link[2]'
получаю
Input is not proper UTF-8, indicate encoding !
да твою же дивизию, ОК

Код: Выделить всё

curl -s "https://www.ntv.ru/video/1525959/"|sed 's|//www.w3.org|http://www.w3.org|g'|iconv -f cp1251 -t utf-8|xmlstarlet sel -N x="http://www.w3.org/1999/xhtml" -t -c '/x:html/x:body/x:div[11]/x:div[1]/x:div[1]/x:link[2]'
тут я уже сдался
-:4.38: Entity 'laquo' not defined
что ему надо ???

Мб всё-таки кто-нибудь соберёт xidel ?
Keenetic Omni II [v2.13.C.0.0-1]; Zyxel Keenetic [V1.00(BFW.4.4)D0]

Вернуться в «Linux - все вопросы тут»

Кто сейчас на конференции

Всего 1 посетитель :: 0 зарегистрированных, 0 скрытых и 1 гость (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (162) здесь было 16 ноя 2019, 18:33

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость