• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTMLを解析し一部書き換えたい)

HTMLの書き換えで困っています!解析方法やタグの抽出方法を教えてください

このQ&Aのポイント
  • javaでプロキシー処理をするプログラムを書いているのですが、HTMLの書き換えで困っています。
  • タグの書き換えをする為、jsoupでHTMLを解析しているのですが、「&」が「&」に変換されてしまいます。
  • HTMLパーサーとしてJsoupの他に、HtmlCleaner、NekoHTML、Jericho、HTML Parserがありますが、タグの抽出方法のサンプルを見つけることができず使えませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

> Jerichoでタグの書き換えができるサンプルがどこかに無いでしょうか? 基本的にParserとは解析だけ(Read Only)で、書き換え(Write)はありません。 Jerichoもさらっと見た感じ、書き換えはできないようです。 記述されているプロキシー機能がよく分からない (プロキシーパターン、プロキシーサーバなど思いつきすぎる)ので、 そちらの説明を行い、よりよいやり方はないか?など アドバイスを求めたほうがいいかもです。

miruha2011
質問者

お礼

ご回答ありがとうございます。 ライブラリはきれいさっぱり諦めて自分で作ることにします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

URLの解釈は実体参照なので、&から&へと変換をするのはパーサとして正しい動作です。 文字列上は&ですが、ブラウザはこれを&と解釈します。 (今回のrefreshの場合、https://xxx.yyy.com/index.html?a=1&b=2へリクエストを投げます。) どうしても&を出力したいならば、そもそもHTMLパーサを使用してはいけません。

miruha2011
質問者

お礼

ご回答ありがとうございます。 ご指摘のように、METAタグ内でエスケープされていてもブラウザの動作は正常でした。 そこで解析&変換されたHTMLを改めて見直したのですが、解析結果が滅茶苦茶になっていました。 scriptタグ内に不要(?)な文字列があるとダメなのかも知れません。 今回はプロキシー動作させるプログラムを書いていますので、不正なHTMLでもある程度許容できないといけないため、jsoupは使い物にならないと判断しました。 NekoとHtmlCleanerも同様に変換結果に難ありですので除外です。 Jerichoは良さそうです。 HTML Parserは確認できませんでした。 Jerichoでタグの書き換えができるサンプルがどこかに無いでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 他のページへの転送

    HTMLなんですが… <Meta http-equiv="refresh" content="0;url=index.html"> で、PCの場合他のページに転送をしますが、携帯でもこのタグを作用させるにはどうしたらいいですか?

  • HTMLの取得と解析について

    フォームのtextareaにHTMLを入力して、そこから必要なタグを取得したいのですが上手くいきません。 textareaの値は取得できています。 textareaの値からgetElementsByTagNameを使用してtableタグを取得しようとしているのでがエラーが出ます。 chromeによると Uncaught TypeError: Object ・・・・ has no method 'getElementsByTagName' 取得した値をgetElementsByTagNameにほり込むのが間違ってるような気もするのですが、良く分かりません。 テキストエリアに入力したHTMLをパースして、再利用する良い方法がありましたらご教授ください。 以下に現状のソースを書かせて頂きます --------------------------------------------------------------------- <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> <!-- function test() { var org_src = document.form1.src.value; table = org_src.getElementsByTagName('table'); document.getElementById('test').innerHTML = org_src; } // --> </script> </head> <body> <p>自動出力</p> <form name="form1"> <p>テキストエリアにソースを張り付けて下さい</p> <p> <textarea id="src" rows="5" cols="30"> </textarea> </p> <p> <input type="button" value="実行" onClick="test()"> </p> </form> <div id="test"> </div> </body> </html> ---------------------------------------------------------------------

  • 強制ジャンプを中止したいです。

    <META HTTP-EQUIV="refresh" content="0;URL=http://www.rakuten.ne.jp/gold/*******htm"> というタグを書いたところ、リンク先に飛んでしまい、そのページの編集ができなくなりました。 通常のHTMLと違い、楽天のRMSでの操作のため、タグの削除ができません。 このタグを無効にするにはどうしたらいいでしょうか?

  • 携帯3キャリアで、設定した時間に別サイトに自動で飛ぶ方法教えてください

    携帯3キャリアで設定時間になると自動で別サイトに飛ばしたいのですが、java、HTMLでも何か方法はございますか? 因みに下記のタグではソフトバンクのみ有効でした。 <META HTTP-EQUIV="refresh" CONTENT="5;URL">

  • HTMLタグから<IMG SRC="">のパス取得と書き換え

    ローカルにおいてある HTML ファイルを読み込ませて、<IMG SRC="sample.gif"> から sample.gif を取得します。 このsample.gifのMD5を取得し、たとえば MD5 が "abcd...xyz" であれば、 (ローカルの別フォルダ)/a/b/abcd...xyz.gif にコピーし、 元の参照を <IMG SRC="a/b/abcd...xyz.gif"> に変換するというスクリプトを書きたいと考えています。 HTML ファイルから sample.gif を取り出す方法、ファイルからMD5を取得する方法について教えていただけないでしょうか。 HTMLのパースなど調べたのですが、特定の属性を書き換える方法は 分かりませんでした。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • これはバグか僕の無知か。(Another HTML lintの採点)

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2. <html> 3. <head> 4. <meta http-equiv="Refresh" content="0;URL=mypage.php3?n=12345&amp;c="> 5. <title>教えてgoo-リダイレクト</title> 6. </head> 7. <body> 8. 9. <p> 10. 11. 自動で移動しない場合は 12. <a href="mypage.php3?n=12345&amp;c=">マイページ</a> 13. アクセスしてみてください。 14. 15. </p> 16. 17. </body> 18. </html> をAnother HTML lint(htmllint.cgi 1.17 / htmllint.pm 3.17)にかけた所、 3: line 4: `&c` は不明な実体参照です。 → 解説 114 3: line 4: `&c` は不明な実体参照です。 → 解説 114 (ほかは省略) というエラーが帰ってきました。 これは、バグでしょうか? それとも私の知識不足でしょうか? ----- http://oshiete1.goo.ne.jp/kotaeru.php3?q=1013847 の#3への補足も読んでいただけると幸いです

    • ベストアンサー
    • HTML
  • VBAでIEのページを(メニュー選択)進める

    エクセルのVBAでIEのページを(メニュー選択)進める件ですが Dim tag As String Dim objtag As Object in_str = "新しく記事を書く" tag = "li" Set objtag = doc.getElementsByName(tag)(0) For Each objtag In IE.document.getElementsByTagName(tag)   If InStr(objtag.outerHTML, in_str) > 0 Then    Exit For   End If Next Debug.Print objtag.outerHTML objtag.Click For は 機能していて、Debug は <LI><A href="?mode=editor&amp;process=new">新しく記事を書く</A> で 止まっています。 で、叩く方法は?? Click が機能しないのですが objtag. の 後に お助け文字が全く出ませんので、行き詰りました。

  • (HTML)ページのリロードでの問題

    初めて質問させていただきます。 下記の件について 何か情報をお持ちの方がいらっしゃいましたら、ご教授いただければと思います。 <meta http-equiv="Refresh" content="秒数;URL=現在のページのURL"> のようにHTMLに記述し、同じページを任意の時間単位に更新させています。 通常は、問題なく動くのですが、 Internet Explorer 6.0 SP2 において、ページ表示中に、 ・更新ボタン ・F5ボタン などでページを更新すると、それ以降、METAタグの更新が効かなくなってしまいます。 Mozilla Firefox 1.5.0.4 では、このような問題は起こりませんでした。 現在のところは、他のブラウザでは確認とれていません。 IEにおいて、 ・問題を回避する方法 ・これはIEの仕様だ など何か情報をお持ちの方がいらっしゃいましたら、 ご教授ください。

    • 締切済み
    • CSS
  • <ruby>タグを使用したHTML文書をWordで読み込みたい

    HTMLで<ruby></ruby>「通称ルビタグ?」を使用した文書をWord97で読み込むと、タグが認識できず、ソースのまま読み込まれてしまいました。 そこでルビタグを使用したHTML文書をWordのふりがな機能を利用した文書に変換したいのですが、当方、マクロはエクセルしか知らず、そもそもWordも余り使ったことがありません……。 VBAのイロハは判るので、「ルビを振るマクロ」のサンプルのようなものがあれば何とか頑張ろうと思うのですが……。もしくはマクロを使わずに同様のことが出来ればもっといいのですが……。どなたかお知恵を貸してください。

  • JavascriptでHTMLをパースするライブラリの使い方

    javascriptでHTMLをパースして、DOMに変換してくれるライブラリを探していたら以下のサイトにたどり着きましたが使い方がわかりません。 http://ejohn.org/blog/pure-javascript-html-parser/ サイトの中段あたりに、 「DOM Document Creator」 というところのサンプルのように、 <script src="htmlparser.js"></script> で外部ファイルをちゃんと読み込んで、 var dom = HTMLtoDOM("<p>Data: <input disabled>"); のようにすると、 domという変数にHTMLtoDOMの引数がDOMに変換されて 格納されるはずなんですが・・・ FirefoxでHTMLtoDOM is not defined とエラーがでてしまいます。 見識ある方、このライブラリを使用する方法を教えていただきたいです。