問題タブ [html5ever]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4104 参照

rust - hyper と html5ever を使用してストリーム内の HTML ページ コンテンツを解析する

HTTP リクエストの HTML レスポンスを解析しようとしています。リクエストにはハイパーを使用し、解析にはhtml5everを使用しています。HTML は非常に大きく、完全に解析する必要はありません。タグからいくつかのデータを識別する必要があるだけなので、ストリーミングしたいと考えています。概念的には、次のようなことをしたい:

私がこれまでに思いついたのは次のとおりです。

read_to_endバイトを読み取るために応答で呼び出したいメソッドのようですが、これをHTMLドキュメントリーダーにパイプする方法は不明です...これが可能であれば.

のドキュメントにparse_documentは、使用するfrom_utf8from_bytes、入力がバイト単位の場合 (これはそうです) と書かれています。

応答からシンクを作成する必要があるようですが、ここで立ち往生しています。また、私が興味を持っているタグの開始をリッスンするイベントを作成する方法も不明です。

私はこのhtml5everの例を見てきましたが、これは私が望むことをしているようで、DOMを歩き回っていますが、この例自体を実行することはできません.時代遅れであるか、tendril/html5everが新しすぎます. これも、HTML をストリームとしてではなく全体として解析するようですが、よくわかりません。

これらのライブラリの現在の実装でやりたいことを行うことは可能ですか?

0 投票する
1 に答える
3366 参照

rust - html5ever でページを解析し、DOM を変更してシリアライズするにはどうすればよいですか?

Dashのドキュメントセットを生成するために、Web ページを解析し、特定の位置にアンカーを挿入し、変更された DOM を再度レンダリングしたいと考えています。これは可能ですか?

RcDomhtml5ever に含まれている例から、HTML ファイルを読み込んで貧弱な HTML 出力を行う方法はわかりますが、取得したオブジェクトを変更する方法がわかりません。

<a name="foo"></a>アンカー要素 ( ) を に挿入するスニペットを見たいと思いRcDomます。

注: これは特に Rust と html5ever に関する質問です...他の言語またはより単純な HTML パーサーでそれを行う方法を知っています。