Есть ли что-то вроде "CSS-селектор" или XPath grep?
Мне нужно найти все места в куче файлов HTML, которые лежат в следующей структуре (CSS):
div.a ul.b
или XPath:
//div[@class="a"]//div[@class="b"]
grep
не помогает мне здесь Существует ли инструмент командной строки, который возвращает все файлы (и, возможно, все места в них), которые соответствуют этому критерию? Т.е. возвращает имена файлов, если файл соответствует определенной структуре HTML или XML.
3 ответа
Попробуй это:
- Установите 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. Напишите вспомогательный скрипт с именем 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
Я создал инструмент командной строки с 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/
pup - это инструмент командной строки для обработки HTML. Он читает из стандартного ввода, печатает в стандартный вывод и позволяет пользователю фильтровать части страницы с помощью селекторов CSS.
Вдохновленный jq, pup стремится быть быстрым и гибким способом изучения HTML с терминала.
Примеры:
$ wget http://en.wikipedia.org/wiki/Robots_exclusion_standard -O robots.html
$ pup --color 'title' < robots.html
<title>
Robots exclusion standard - Wikipedia, the free encyclopedia
</title>
Пер Ната ответ здесь:
Command-line tools that can be called from shell scripts include:
4xpath - command-line wrapper around Python's 4Suite package
XMLStarlet
xpath - command-line wrapper around Perl's XPath library