4

私がperlまたはpythonで書かれたスクリプトを持っているとしましょう。文字列の一部としてjqueryセレクターを使用する関数を作成する最も簡単な方法は何ですか?つまり、次のことができるようになります。

jquery_selector('table.new#element', text)

ここで、jquery_selectorはに格納されているhtml文字列に対してjqueryセレクターを実行する関数ですtext。文字列(完全なjqueryオブジェクトではない)を返すことに限定されていたとしても、それでも本当に便利です。つまり、結果をスクリプト言語で理解できるものにレンダリングするコールバックとしてjavascript関数を指定する必要がある場合:

jquery_selector('table.new#element, text, 'function(e){return e.val()}')

また、コールバックの結果をリストとして返します。

ほとんどの言語にdomライブラリがあることはわかっていますが、jqueryはほとんどの言語よりもはるかに優れています。

jqueryのような構文を持つネイティブライブラリについては質問していません。jqueryが実行されるブラウザへのAPIが必要になると思いますか?それとも、これはnode.jsが行うことですか?

4

2 に答える 2

4

私があなたの質問を正しく理解しているなら、あなたが望むのはphantom.jsのようなものです。PhantomJSは、JavaScriptAPIを備えたヘッドレスWebKitです。jqueryを挿入し、すべてのjqueryセレクターを使用してDOMを操作できます。スタンドアロンサーバーのように機能させることもできます。

于 2012-06-29T02:21:52.113 に答える
0

質問でPythonまたはPerlを参照していますが、質問に「node.js」のタグを付けているため、混乱しています。HTML DOMでセレクターを実行するためだけにnode.jsやphantom.jsを実行することは、私には非常に重く聞こえます。実際のプロジェクトでは、依存関係のチェーン全体を常に導入することを慎重に検討する必要があります。

したがって、Pythonの場合、この回答で述べたように、BeautifulSoupsoupselectを組み合わせて実行することをお勧めします。その後、次のようなことができます。

from BeautifulSoup import BeautifulSoup as Soup
from soupselect import select
import urllib

soup = Soup(urllib.urlopen('http://slashdot.org/'))
select(soup, 'div.title h3')

soupselectはjqueryのCSS3セレクターのサブセットのみを実装しているように見えるため、兄弟セレクターや疑似クラスなどでは機能しない可能性があることに注意してください。この場合、プロジェクトの関連部分をnode.jsに移植することを検討することをお勧めします。これは、Sizzle(jQueryのセレクターエンジン)またはcheerioスタンドアロンをやや軽量な環境で実行できる場合です。

于 2014-08-16T09:36:27.007 に答える