Подтвердить что ты не робот

Есть что-то вроде "CSS-селектора" или XPath grep?

Мне нужно найти все места в кучке HTML файлов, которые лежат в следующей структуре (CSS):

div.a ul.b

или XPath:

//div[@class="a"]//div[@class="b"]

grep не помогает мне здесь. Есть ли инструмент командной строки, который возвращает все файлы (и, возможно, все места там), которые соответствуют этому критерию? I.e., который возвращает имена файлов, если файл соответствует определенной структуре HTML или XML.

4b9b3361

Ответ 1

Попробуйте следующее:

  • Установите http://www.w3.org/Tools/HTML-XML-utils/.
  • Сохраните веб-страницу (назовите ее filename.html).
  • Запуск: hxnormalize -l 240 -x filename.html | hxselect -s '\n' -c "label.black"

Где "label.black" - это селектор CSS, который однозначно идентифицирует имя элемента HTML. Напишите помощник script с именем cssgrep:

#!/bin/bash

# Ignore errors, write the results to standard output.
hxnormalize -l 240 -x $1 2>/dev/null | hxselect -s '\n' -c "$2"

Затем вы можете запустить:

cssgrep filename.html "label.black"

Это приведет к созданию содержимого для всех элементов HTML label класса black. Смотрите также: https://superuser.com/a/529024/9067

Ответ 2

Я создал инструмент командной строки с Node JS, который делает именно это. Вы вводите селектор CSS, и он будет искать все файлы HTML в каталоге и сообщать вам, какие файлы имеют совпадения для этого селектора.

Вам нужно будет установить Element Finder, cd в каталог, который вы хотите найти, а затем запустить:

elfinder -s "div.a ul.b"

Для получения дополнительной информации см. http://keegan.st/2012/06/03/find-in-files-with-css-selectors/

Ответ 3

Per Nat ответьте здесь:

Как анализировать XML в Bash?

Command-line tools that can be called from shell scripts include:

4xpath - command-line wrapper around Python 4Suite package
XMLStarlet
xpath - command-line wrapper around Perl XPath library