• 締切済み

WebページまたはHTMLソースから任意の文字列を

WebページまたはHTMLソースから任意の文字列を抽出する(または色を変える太字にする)ブックマークレットを探しています WebページまたはHTMLソースから任意の複数の文字列(※)を抽出する(または色を変えて表示する、フォントを変える、太字にする)方法はありませんか? ※任意の文字列は別ウィンドウを出し、そこに入力したものが抽出されるものがいいのですが…。 JavascriptによるBookmarkletで実現可能だと思うのですが、アドバイスお待ちしています。 (※「WebページまたはHTMLソースから任意の複数の文字列」という表現が分かりにくいですが、例えば芸能人のtwitterのIDを含んだ公式ホームページを例にとると「公式twitterのID」と言った任意の文字列を抽出[または色を変えて表示する、フォントを変える、太字にする]方法を探しています。) 下記のタイプだとHTMLソース内の検索ができなくて…。教えてください <html> <body> <a href="javascript:(function(){ var arg = prompt('文字を入力',''), cont; if(!arg){ return; } if(document.body.createTextRange){ cont = document.body.createTextRange(); var BM= cont.getBookmark() }; function MakeSpan(mode){ var div = document.createElement('div'), span = document.createElement('span'); div.appendChild(span); span.style.cssText = 'background-color:#ff00ff; color:white;'; if(mode){ span.innerHTML = arg; return div}else{ return span; } } if(cont){ cont.moveToBookmark(BM); while(cont.findText(arg,1,4)){ cont.pasteHTML(MakeSpan(true).innerHTML); }}else{ if(window.find){ while(window.find(arg, true, false) ){ if(window.getSelection() == ''){ continue; } window.getSelection().getRangeAt(0).surroundContents(MakeSpan()); }}}})();">検索反転</a> これをHTMLファイルとして表示させて、このリンク『検索反転』をブックマークしてください。 ざっと作った簡単なbookmarkletなので、、 RSSフィードの方の対応はしていません。 IE7とFirefox2のみ動作確認しています。 Netscapeは動きません。 Safariは調整すれば動きますが調整していません。 反転表示の色については現在は背景ピンク、文字が白です。 このスクリプト内に background-color:#ff00ff; color:white; と言う場所があります。 色を変える時はこのスクリプトの色部分を変更してからブックマークしなおしてください。 この説明文は、色書換えの時のサンプル用にHTML内に入れてあります。 「検索反転」をクリックすればこのページ内で確認できます。 </body> </html>

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >HTMLソースの中のタグまたは文字列を検索し、該当部分を >ブラウザ表示する方法だとどうすればいいのでしょうか? なんだか、元の質問内容とはぜんぜん違うような…?? ソースを文字列として検索したいのであれば、documentのhtmlやbodyのinnerHTMLを取得して検索するということになりそう。 でもタグの検索はけっこう面倒そうな気がしますが…(単に、私の感想だけですが←正規表現が苦手なこともあり) 単純にdocument内の特定要素を拾い出したいだけであれば、DOMでgetElementsByTagName("○○")を利用する方がはるかに簡単かと思います。 通常の「文字列」はブラウザに表示されていますから色を変えたりすることで強調できますが、タグやその属性の文字列などは表示されていませんので、検索した後どのように表示するのかについてはひと工夫いるのではないでしょうか。 別に拾い出して、文書の最後に文字列として追加しちゃうとか… でも、これ(↑)だと部分だけ拾い出しても文書全体のどこに当たるのかはまったくわからないですねぇ… いっそのこと、ソース全体を文字列として表示してしまい、その中で該当箇所の色を変えて表示するとか… しかし、このような方法だと、スクリプトでソース自体が変更されてしまいますので、#1での回答のように2回、3回と繰り返すわけにはいかなくなってしまいます。 そうすると、ソースの変更を避ける意味からも、別ウィンドウを開いて、そちらにソースを表示するようにするといった案も考えられそうですが…(ブックマークレットからの動作はちゃんと確認はしていません)

全文を見る
すると、全ての回答が全文表示されます。
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

私の環境では、ご提示のコードは動作しないみたいだし(コピペミスなのかな?)、整形するのも面倒なので中身は見ていませんが… もし、お手元のもので動作しているのなら、そのままで使えるのではないでしょうか? そのまま登録すればよいはずです。(…って説明にも書いてありますよね?) スクリプトの作者もそのつもりで作成なさっているのではないでしょうか? (多分に、簡易版のつもりのようではありますが…) >任意の複数の文字列 の意味がよくわかりませんが、 >公式ホームページを例にとると「公式twitterのID」と言った任意の文字列 というのは、任意の『単数』の文字列なので、そのままで問題ないのではないでしょうか? 複数の文字列に対して同じ処理を行ないたければ、2回行なうことで可能ではないかと想像しますが? 同じ色になってしまうのが困るとか言うのであれば又別ですが… (色をかえたものを別に用意しておくという、単純な方法も使えると思います。) >または色を変えて表示する、フォントを変える、太字にする 作者の説明(?)にもありますが、別の色にしたりするのと同じ要領で、太字やフォントへの変更も可能なのではないでしょうか? (内容を見ていないので推測ですが…cssと同じ指定になっているみたいなので)

st13665
質問者

お礼

ご回答ありがとうございます。 質問の仕方が悪かったですね…。申し訳ございません。 >任意の複数の文字列 >または色を変えて表示する、フォントを変える、太字にする はおっしゃるっとり対応できました。 HTMLソースの中のタグまたは文字列を検索し、該当部分をブラウザ表示する方法だとどうすればいいのでしょうか?

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

関連するQ&A

  • spanを使わずに文字列の一部を赤色にする方法

    HTML/CSSについて教えてください。 文字列の一部を赤色にしたいとき、インラインで記載すると以下のようになると思います。 <span style="color:#FF0000;"> samplesamplesample </span> 上記内容を、 「span」を使わずにインラインで記載する方法を教えて欲しいです。 (HTML5用でお願いします) ※ググったところ、 <div style="display:inline;color:#FF0000;"> samplesamplesample </div> という書き方でよさそうに思うのですが、詳しくないのでよく分からず・・。 <font style="color:#FF0000;"> samplesamplesample </font> という書き方が、やりたいことに最も近い気がしますが、HTML5では禁止?されていると知りました。 恐れ入りますが、どなたかよい方法をお教えくださると嬉しいです。

    • ベストアンサー
    • CSS
  • 任意の文字列を抽出

    半角スペースを含む文字列から任意の文字列を抽出するには、どういった処理が必要になりますか?

    • ベストアンサー
    • Perl
  • WebページまたはRSSフィードから任意の文字列を抽出する(または色を変える太字にする)ブックマークレットを探しています

    WebページまたはRSSフィードから任意の複数の文字列(※)を抽出する(または色を変えて表示する、フォントを変える、太字にする)方法はありませんか? JavascriptによるBookmarkletで実現可能だと思ったのですが、アドバイスお待ちしています。 (※「WebページまたはRSSフィードから任意の複数の文字列」という表現が分かりにくいですが、例えばこの質問が載っているページを例にとると「カテゴリー」「ブックマーク」「回答」と言った任意の文字列を一度に抽出[または色を変えて表示する、フォントを変える、太字にする]方法を探しています。)

  • VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています

    VBAを使ってHTMLソースから特定の文字列を抽出したいと思っています。 正規表現を利用してタグに挟まれた文字を抽出したいのですがうまくいきません。 タグごと抽出する方法でも構わないので教えてください。 例えば <a href="www.yahoo.com△">○○○</a>   ・・・<1> ※△は(www.yahoo.com)+(半角数字1文字) ※○○○は1文字以上の全角文字 このようなパターンの文字列(<1>を丸ごと)を抜き出すには どのような正規表現を書けばよいでしょうか? 単に<a href ではじまって </a>  で終わる文字列であれば <a href.*</a> で良いと思うのですが、もう少し範囲を絞れば目的の文字列だけを抽出できるので ぜひ実現させたいと思っています。宜しくお願いします。

  • Perl HTMLソースから特定のタグ抽出

    use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'https://www.yahoo.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; $proxy->agent('your own created browser name here'); # 任意 $proxy->timeout(60); # 任意 my $req = HTTP::Request->new('GET' => $URL); my $res = $proxy->request($req); my $content = $res->content; print "Content-Type: text/html\n\n"; # HTML ヘッダ (CGI として動作できる) if($res->is_success) { print $content; } else { print 'HTTP エラーコード: ' . $res->code; } これで、HTMLソース全てを取得することはできましたが、 例えば、このソースはヤフーのコードを取得していますが、 ヤフーのコード内で<li></li> リストタグないの文字列がほしいのですが、 どのように抽出すればいいのでしょうか? ヤフーでは、下記のようになっていて <li><a hrf="???????????????">ここの文字列<span>写真</span><span>new</span></li> このソースからここの文字列を抽出させたいです。 さらに、1番目の<li>内、4番目の<li>内といったことも実行したいです。 どうかご教示お願い致します。

  • 特定の文字列間を抽出(MAC)

    特定の文字列間の文字列を抽出したいのですがなにか いいソフトはありませんでしょうか?例えば、 <p>△△△</p> <span>◯◯◯</span> <span>□□□</span> という文があったら <span>◯◯◯</span> <span>□□□</span> もしくは ◯◯◯ □□□ を抽出したいのですが。 回答お待ちしています。

  • 一部の文字列の右寄せについて

    以下の例のとおり文字列の横に赤と書き赤の文字だけを装飾し右寄せします。 これはテーブルの中に書いているのですが、文字列が長くセル内で折り返し2行で 表示された際に赤の文字は3行目に右寄せされてしまいます。 これを2行目に表示させることはできないでそうか。 よろしくお願い致します。 .right { text-align:right; } .aka { background-color:#FF0000; } あいうえおかきくけこ<DIV CLASS="right"><SPAN CLASS="aka">赤</SPAN></DIV>

  • 文字列の<>で囲まれた文字列を一括削除する方法

    サイトのソースで、本文に<br>、</div>などのHTMLタグが挿入されていますが、 これらのタグを一括して削除する方法はないでしょうか。 私が最初に試したのは、ソースをメモ帳に張り付けて、置換機能を利用して ワイルドカードを使い、<*>の文字列を空白に置き換える方法ですが、 上記のようなタグがあるにも関わらず、該当する文字列がないと エラー表示され置換できません。 具体的には、以下のように編集したいです。 (置換前) <div class="t_h ">7: <span style="color: green; font-weight: bold;">名無しさん</span> <span style="color: gray;"> 2013/09/26(木) 15:55:59.62 ID:FahaifvL0</span></div> <div class="t_b " > 山田太郎だったら営業に有利そうだな </div><br /> (置換後) 7: 名無しさん2013/09/26(木) 15:55:59.62 ID:FahaifvL0 山田太郎だったら営業に有利そうだな どなたかいい方法を教えていただけますでしょうか。 よろしくお願いします。

  • ajaxでサーバより取得したHTML断片文字列をブラウザに正しく表示させたい

    質問1 ajaxを利用してWebサーバから「<B>hoge</B>」のような文字列を取得することはできたのですが、それをブラウザ上に太字のhogeとして表示させたいのですが、ブラウザでタグが解釈されず「<B>hoge</B>」のまま表示されます。サーバから取得したHTML断片文字列をブラウザに解釈させて表示させるにはどうしたらよいのでしょうか。 質問2 appendChild()を繰り返し実行すると、既に取得済みの文字列に対して、新たに取得した文字列がアペンドされます。アペンドさせずにボタン押下で取得した文字列だけを画面に表示させるにはどうしたらよいのでしょうか? よろしくお願いいたします。 JavaScript var disp = document.getElementById('disp'); disp.appendChild(document.createTextNode(xmlhttp.responseText)); HTML出力位置 <div id="disp"></div>

  • preg_match_all 複数の文字列を取得

    preg_match_all で複数の文字列を取得したい。 正規表現について勉強している者です。 preg_match_allを使って複数の文字列を取得したいのですが、 パターンの書き方に苦戦しています。 取得したいデータは以下の5つです。 一つずつであれば、どのデータも問題なく取得できますが、 2つ以上組み合わせると、抽出した結果に余計な文字が入ったり、 何も結果を返さなかったりとなってしまいます。 皆様お知恵を貸してください。よろしくおねがいします。 ///////////取得したいデータ/////////// 1つめ→○△□○△□○日本語や英語や数字△□○△□○△□○△□ 2つめ→2010/03/04(日) 16:33:48.21 3つめ→Reg1046H2556USAsantaclala 4つめ→score995 5つめ→●▲■<br> ●▲■●日本語や英語や数字▲■●▲■●<br> ▲■●▲■●▲■●▲■●<br> ▲■●▲■●▲■ 5つめには改行が入ることもあります。 /////////////////////////////////////// HTMLコード↓ <div class="cell" material="\1"></div></div> : <span style="grey"><b>○△□○△□○△□○△□○△□○△□</span></b> DATE 2010/03/04(日) 16:33:48.21 <div class="gj"><a href="www.hoge.com" class="Reg1046H2556USAsantaclala"><span class="well">domestic</span></a><div class="hollywater" name="BUFFALO"></div></div>bridge</div><div id="score995">●▲■<br> ●▲■●▲■●▲■●<br> ▲■●▲■●▲■●▲■●<br> ▲■●▲■●▲■</div>

    • 締切済み
    • PHP