20

次の構造(CSS)にある一連のHTMLファイル内のすべての場所を見つける必要があります。

div.a ul.b

またはXPath:

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

grepここで私を助けません。この基準に一致するすべてのファイル(およびオプションでその中のすべての場所)を返すコマンドラインツールはありますか?つまり、ファイルが特定のHTMLまたはXML構造に一致する場合、ファイル名を返します。

4

4 に答える 4

25

これを試して:

  1. http://www.w3.org/Tools/HTML-XML-utils/をインストールします。
    • Ubuntu:aptitude install html-xml-utils
    • マックOS:brew install html-xml-utils
  2. Webページを保存します(filename.htmlと呼びます)。
  3. 走る:hxnormalize -l 240 -x filename.html | hxselect -s '\n' -c "label.black"

"label.black"HTML要素の名前を一意に識別するCSSセレクターはどこにありますか。次の名前のヘルパースクリプトを作成します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"

これにより、クラスのすべてのHTMLlabel要素のコンテンツが生成されますblack

引数は、出力の-l 240改行を解析しないようにするために重要です。たとえば、<label class="black">Text to \nextract</label>が入力の場合-l 240、HTMLをに再フォーマットし、<label class="black">Text to extract</label>列240に改行を挿入します。これにより、解析が簡素化されます。1024以上に拡張することも可能です。

参照:

于 2013-01-06T21:41:53.417 に答える
9

これを実行するNodeJSを使用してコマンドラインツールを作成しました。CSSセレクターを入力すると、ディレクトリ内のすべてのHTMLファイルが検索され、そのセレクターに一致するファイルが示されます。

cd検索するディレクトリにElementFinderをインストールしてから、次のコマンドを実行する必要があります。

elfinder -s "div.a ul.b"

詳細については、http://keegan.st/2012/06/03/find-in-files-with-css-selectors/を参照してください。

于 2012-06-05T03:06:24.790 に答える
3

pupは、HTMLを処理するためのコマンドラインツールです。stdinから読み取り、stdoutに出力し、ユーザーが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>
于 2020-05-12T07:46:11.273 に答える
0

ここでのNatの回答によると:

BashでXMLを解析する方法は?

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
于 2011-09-07T17:08:28.460 に答える