問題タブ [enlive]
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.
html - Clojure Enlive: enlive ネストされたマップ データを HTML に変換する方法は?
私はサイトのスクレイパーを書いています。目標は、再フォーマットされたサイトのバージョンを作成することです。スクレイピングの一環として、いくつかのコメントに飛び込みます。コメントには、html 形式が含まれている可能性があるため、次のようになります。
{... :content ("そして、低い声で\"これは" {:tag :em, :attrs nil, :content ("common")} "?\"")}
問題は、次のように、この :content 値のコンテンツを取得して、組み込みの enlive 関数を使用して HTML に変換できるかどうかです。
これは<em>一般的</em>ですか?
これらのタグを処理するために何かを書く方法はわかりますが、エッジケースを見逃す可能性があるため、何かを自作することを非常にためらっています.
jetty - HTML エンティティが ? として表示される Jetty から提供される場合のみ
©
やなどの HTML エンティティが ? として表示されます。これは、ページにレンダリングするときと、基になるソースを表示するときの両方で表示されますが、本番用の Jetty サーバー (ディレクトリmdash;
内) を介して提供される場合のみです。webapps
HTML エンティティは、ローカルの Nginx を介して静的ファイルから提供される場合に問題なく表示されます。また、組み込みの Jetty を使用して Pedestal アプリの開発を実行すると、見栄えもよくなります。HTML ヘッドは次のとおりです。
これを解決するにはどうすればよいですか?何がうまくいかないのですか?または、それが失敗した場合、どうすればデバッグできますか?
いくつかのアイデア:
まず、本番環境で Jetty 9.1.X を使用しています。私の開発サーバーは(からlein deps :tree
)使用します:
再確認する必要がある Jetty 9 のプロダクション設定はありますか?
第二に、私はEnliveを使用しています。次の依存関係に依存しています (からlein deps :tree
):
どういうわけか、TagSoupは本番環境と開発環境で異なる動作をしているのだろうか。
更新:
応答ヘッダーは次のとおりです。
text/html;charset=UTF-8
Jetty が問題であることを除外しているようです。TagSoup が期待どおりに動作していない可能性があると思います (可能性も高い)。
私は現在、Enlive メーリング リストでこのスレッドを読んでいます: mdash output as question mark .
更新: 私の Clojure テンプレート (Enlive を使用していましたが、Laserに切り替えたばかりですが、この点に関してはどちらも同じように動作します) は、HTML エンティティを Unicode に変換します。問題は、インストールした Jetty 9 が Unicode 文字を処理するように構成されていない (または必要なものを与えていない) ことのようです。
clojure - Enlive テンプレート - ページの最後にスクリプトを追加する方法
ページにカスタム backbone.js スクリプトを追加していますが、ページの最後に配置する必要があります。
ここで説明されているように、HTML ヘッドにスクリプトを追加するためのソリューションを見てきました:テンプレートをエンライブ – ヘッド セクションに追加
残念ながら、ページの下部にスクリプトを追加する必要があります。
regex - Enlive と Clojure を使用した MLA 参照の HTML 抽出
私の目的は、後でデータベースに入力するために、Web ページから一連の書誌参照を抽出して解析することです。リファレンスはすべて MLA 形式です。これは、MLA 形式の参考文献のすべてのインスタンスに対する一般的な解決策であり、以下に示す Web ページ以外でも機能するはずです。
動作しない私の試行コードは次のとおりです。
すべての enlive ノードで正規表現マッチャー ( ) を実行するマクロextract-re
を作成したいと考えています。変更する必要がある変数は 2 つあります。1 つは正規表現自体で、もう 1 つは修飾子であり、処理前に enlive ノードを変更します。修飾子がない場合、正規表現は著者と一部のタイトルの両方に一致します。関数を書いてみたのですが、一般的には動かなかったので、マクロがいいと思います。doseq
re-find
MLA 参照については、間違っているかもしれませんが、すべての抽出を正規表現で行うよりも、enlive ノードで修飾子を使用する方が簡単だと思います。タイトルのみ、または著者のみに一致する正規表現を行う方法が思いつきません。
では、修飾子をマクロに渡して適切に実行するにはどうすればよいでしょうか。私はマクロの引用の詳細を完全には理解していないので、そもそもマクロをどのように記述したか、またはマクロが必要であるかどうかについては、かなりずれている可能性があります。
clojure - Clojure: enlive deftemplate はスニペットを使用できません
データを含むテーブルを生成するテンプレートを作成しようとしています。データは、msh-contents で定義されたマップから取得されます。
したがって、REPL でテンプレートを呼び出す
次のエラーが生成されます: IllegalArgumentException ArityException PersistentArrayMap clojure.lang.AFn.throwArity (AFn.java:437) に渡された引数の数 (0) が正しくありません。
clojure - ログインしてウェブページを読む (cloju)
Web ページのコンテンツを毎日ダウンロードする必要があり、そのために enlive を使用する予定です。問題は、最初に POST でログインする必要があり、関心のあるページの認証がセッションの Cookie で行われることです。だから私はただ使うことはできません
clojure でこれを行う方法が見つかりませんでした。それ以外の場合は、Java で読み取りを行っても問題ありません。最終的には、heroku のワーカーとして機能するはずです。
ありがとう!