C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[14]: 読み込んだウェブページのタイトルをボタンに変える。


(過去ログ 68 を表示中)

[トピック内 21 記事 (1 - 20 表示)]  << 0 | 1 >>

■39541 / inTopicNo.1)  読み込んだウェブページのタイトルをボタンに変える。
  
□投稿者/ RT (7回)-(2009/08/10(Mon) 20:21:08)

分類:[C#] 

2009/08/10(Mon) 20:22:02 編集(投稿者)
2009/08/10(Mon) 20:21:24 編集(投稿者)

<pre><pre>たびたびお世話になっております。RTと申します。

visual C# 2008 Express Editionで開発を行っております。

質問させていただきます。
コンボボックスで選択したURLのページの情報を読み込んで、そのページのタイトルをウィンドウフォーム上に置いたボタンのテキストプロパティとして表示するということをしたいのですが、

@タイトルタグに囲まれている部分を取ってくる。
A取ってきたデータをボタン上に表示する。
というような感じだと思うのですが、具体的にどのようなコードを書けば、良いのかわかりません。
どなたかアドバイスよろしくお願いします。
</pre></pre>

引用返信 編集キー/
■39544 / inTopicNo.2)  Re[1]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ やじゅ (1200回)-(2009/08/10(Mon) 20:40:54)
やじゅ さんの Web サイト
2009/08/10(Mon) 20:44:39 編集(投稿者)

No39541 (RT さん) に返信
> 質問させていただきます。
> コンボボックスで選択したURLのページの情報を読み込んで、そのページのタイトルをウィンドウフォーム上に置いたボタンのテキストプロパティとして表示するということをしたいのですが、

C#でなんですが、1案としてタイトルタグを取得するJavaScriptを実行させるって方法もあります。

C#のWebBrowserコンポーネントからJavaScriptを実行
http://web.sfc.keio.ac.jp/~shokai/archives/2007/01/cs-webbrowser-javascript.html

[javascript] urlとtitleタグの中身を取得する方法
http://www.0yen-coding.com/2009/07/javascript-title.html
引用返信 編集キー/
■39545 / inTopicNo.3)  Re[1]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ .SHO (993回)-(2009/08/10(Mon) 20:41:15)
> @タイトルタグに囲まれている部分を取ってくる。
> A取ってきたデータをボタン上に表示する。

↑これでOKです。
引用返信 編集キー/
■39546 / inTopicNo.4)  Re[1]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ 魔界の仮面弁士 (1186回)-(2009/08/10(Mon) 20:48:35)
No39541 (RT さん) に返信
> (1)タイトルタグに囲まれている部分を取ってくる。
> (2)取ってきたデータをボタン上に表示する。
WebBrowser コントロールを利用しても良ければ、
 a) Navigate メソッドで指定した URL に移動。
 b) DocumentCompleted イベント内で、DocumentTitle プロパティを取得。
 c) Button の Text プロパティに、b で得た文字列をセットする。
という手順で取得できます。

void Form1_Load(object sender, EventArgs e)
{
  webBrowser1.DocumentCompleted += delegate { button1.Text = webBrowser1.DocumentTitle; };
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
  string url = comboBox1.Text;
  webBrowser1.Navigate(url);
}


ブラウザ画面の表示を伴わないのであれば、たとえば
 A) HttpWebRequest クラスで、指定した URL の内容を Stream として取得。
 B) Stream の内容を String として取得。
 C) Regex を使うなどして、title タグの中身を得る。
 D) Button の Text プロパティに、C で得た文字列をセットする。
といった形で取得できるかと。

引用返信 編集キー/
■39547 / inTopicNo.5)  Re[2]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (8回)-(2009/08/10(Mon) 20:50:11)
No39544 (やじゅ さん) に返信
> 2009/08/10(Mon) 20:44:39 編集(投稿者)
>
> ■No39541 (RT さん) に返信
>>質問させていただきます。
>>コンボボックスで選択したURLのページの情報を読み込んで、そのページのタイトルをウィンドウフォーム上に置いたボタンのテキストプロパティとして表示するということをしたいのですが、
>
> C#でなんですが、1案としてタイトルタグを取得するJavaScriptを実行させるって方法もあります。
>
> C#のWebBrowserコンポーネントからJavaScriptを実行
> http://web.sfc.keio.ac.jp/~shokai/archives/2007/01/cs-webbrowser-javascript.html
>
> [javascript] urlとtitleタグの中身を取得する方法
> http://www.0yen-coding.com/2009/07/javascript-title.html

やじゅさんの紹介してくれたページを見たのですが、いまいち解りませんでした。
HTMLタグの特定の部分を認識して、それに囲まれているデータを抜き出して、表示する方法がわかりません。
引き続きアドバイスお願いします。
引用返信 編集キー/
■39548 / inTopicNo.6)  Re[3]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ やじゅ (1201回)-(2009/08/10(Mon) 20:52:30)
やじゅ さんの Web サイト
No39547 (RT さん) に返信
> やじゅさんの紹介してくれたページを見たのですが、いまいち解りませんでした。
> HTMLタグの特定の部分を認識して、それに囲まれているデータを抜き出して、表示する方法がわかりません。
> 引き続きアドバイスお願いします。

あ、忘れてください。これで出来ないこともないけど、かえって面倒でした(^^;

引用返信 編集キー/
■39549 / inTopicNo.7)  Re[4]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (9回)-(2009/08/10(Mon) 21:02:39)
2009/08/10(Mon) 21:17:18 編集(投稿者)
2009/08/10(Mon) 21:11:42 編集(投稿者)

魔界の仮面弁士のおかげで正規表現でタグの中身を取ってくるというのはわかったのですが、
実は、ページのタイトルだけではなく、文章とかも、タグに囲まれている単位で取ってきて、それぞれ、設置されたボタン上に表示したいのです。どうすれば良いでしょうか>?
そもそも正規表現で、タグに囲まれているテキストデータを得る方法がいまいちつかめていません。
引用返信 編集キー/
■39568 / inTopicNo.8)  Re[5]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ .SHO (996回)-(2009/08/11(Tue) 08:50:05)
> そもそも正規表現で、タグに囲まれているテキストデータを得る方法がいまいちつかめていません。

べつに正規表現使わなくても、とにかく必要なものを探せばいいだけでは。
引用返信 編集キー/
■39572 / inTopicNo.9)  Re[6]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (10回)-(2009/08/11(Tue) 09:13:00)
No39568 (.SHO さん) に返信
>>そもそも正規表現で、タグに囲まれているテキストデータを得る方法がいまいちつかめていません。
>
> べつに正規表現使わなくても、とにかく必要なものを探せばいいだけでは。

どうすればよいのでしょうか、具体的に、コードで教えてもらえるとありがたいです。
引用返信 編集キー/
■39573 / inTopicNo.10)  Re[7]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ .SHO (998回)-(2009/08/11(Tue) 09:18:15)
> どうすればよいのでしょうか、具体的に、コードで教えてもらえるとありがたいです。

具体的にどこまで出来てるのか、コードで示してもらった方が教えやすいです。
引用返信 編集キー/
■39576 / inTopicNo.11)  Re[8]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (11回)-(2009/08/11(Tue) 09:43:34)
No39573 (.SHO さん) に返信
>>どうすればよいのでしょうか、具体的に、コードで教えてもらえるとありがたいです。
> 
> 具体的にどこまで出来てるのか、コードで示してもらった方が教えやすいです。


       
Cmb_Urlはコンボボックス、lboxEditor1は、リッチテキストボックスです。

            //WebClient型の変数の宣言
            WebClient wc = new WebClient();

            //コンボボックスに示されたURLのページ情報を読み、Stream型の変数に入れる。
            Stream st = wc.OpenRead(Cmb_Url.Text);

            //Shift_JISへの変換情報をEncoding型の変数に入れる。
            Encoding enc = Encoding.GetEncoding("Shift_JIS");
            
            //ページ情報をShift_JISに変換しながら、読み込む、という情報をStreamReader型の変数に入れる。
            StreamReader sr = new StreamReader(st, enc);
            
            //ページを上記の方法で最後の行まで、読み取る。
            lboxEditor1.Text = sr.ReadToEnd();

            //srを閉じる。
            sr.Close();


 コンボボックスで選択したURLのページのHTML文をリッチテキストボックスに読み込んでいます。
 このあとに、特定のタグにかこまれた文字列などを、抜き出して、フォーム上のボタン上に表示したいのです。
 アドバイスお願いします。

引用返信 編集キー/
■39579 / inTopicNo.12)  Re[5]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ 魔界の仮面弁士 (1187回)-(2009/08/11(Tue) 10:02:12)
No39547 (RT さん) に返信
> やじゅさんの紹介してくれた

No39549 (RT さん) に返信
> 魔界の仮面弁士のおかげで
(T_T)

> 実は、ページのタイトルだけではなく、文章とかも、タグに囲まれている単位で取ってきて、
HTML のタグの中には、終了タグの無い物や終了タグが省略可能な物もありますので、
厳密に解析しようとすると、結構厄介だったり…。

> それぞれ、設置されたボタン上に表示したいのです。どうすれば良いでしょうか>?
タグ解析は面倒なので、まずは WebBrowser に頼る方法から始めてみては如何でしょう?
Document プロパティ経由で、個々のタグの内容を得ることができます。

> //Shift_JISへの変換情報をEncoding型の変数に入れる。
> Encoding enc = Encoding.GetEncoding("Shift_JIS");
参照しようとしているサイトは、すべて Shift_JIS のページなのでしょうか?
別の文字コードが使われているサイトでは、それぞれに合わせた Encoding が必要です。


> 特定のタグにかこまれた文字列などを、抜き出して、
こんなのとか。
http://japan.internet.com/developer/20051115/25.html
引用返信 編集キー/
■39581 / inTopicNo.13)  Re[6]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (12回)-(2009/08/11(Tue) 10:35:39)
>タグ解析は面倒なので、まずは WebBrowser に頼る方法から始めてみては如何でしょう?
>Document プロパティ経由で、個々のタグの内容を得ることができます。

↑具体的にどのようなコードを打てばよいのでしょうか?

>> 特定のタグにかこまれた文字列などを、抜き出して、
>こんなのとか。
http://japan.internet.com/developer/20051115/25.html

↑このページ見てみたのですが、コメントアウトばかりで、よくわかりませんでした。
引用返信 編集キー/
■39585 / inTopicNo.14)  Re[7]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ 魔界の仮面弁士 (1188回)-(2009/08/11(Tue) 10:55:34)
2009/08/11(Tue) 11:22:55 編集(投稿者)
No39581 (RT さん) に返信
>>タグ解析は面倒なので、まずは WebBrowser に頼る方法から始めてみては如何でしょう?
>>Document プロパティ経由で、個々のタグの内容を得ることができます。
> ↑具体的にどのようなコードを打てばよいのでしょうか?
まず、先に提示した WebBrowser によるタイトル取得方法は実装できていますでしょうか。

『特定のタグにかこまれた文字列』についての説明が無いので、具体的なコードを書くのは
難しいのですが、とりあえずこんなイメージで実装できるかと思います。
(タグが入れ子になっている場合にどうしたいのかなど、色々と考慮すべき事はありそうですが)

string tagName = タグ名;
foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName(tagName))
{
   string s = item.InnerText;
   MessageBox.Show(s);
}


>>> 特定のタグにかこまれた文字列などを、抜き出して、
>> こんなのとか。
> http://japan.internet.com/developer/20051115/25.html
> ↑このページ見てみたのですが、コメントアウトばかりで、よくわかりませんでした。
どこが分からないのか、あるいは、どこまでなら分かるのかを明示して頂かないと、
回答側としても、何を追加説明すれば良いのか分かりません。(^^;


> コメントアウトばかりで
コメントアウトとは、ソースコードの一部を「コメント」にして無効化する事ですよね。
(コードの説明文として記述されたコメントの事は、コメントアウトとは呼ばないかと)

ざっと見た限りでは、「///」による XML ドキュメント コメントは埋め込まれていますが、
「//」や「/*〜*/」でコメントアウトされたコードは含まれていないと思いますよ。



それと先の正規表現による手法についてですが、こちらについては、下記に
Regex クラスを用いて、A タグのリンクを抜き出すサンプルが掲載されていました。
これらを応用すれば、目的が果たせるかも知れません。(正規表現の構文を理解する必要はありますが)

http://msdn.microsoft.com/ja-jp/library/t9e807fx.aspx
http://www.atmarkit.co.jp/fdotnet/dotnettips/579regexmatch/regexmatch.html

引用返信 編集キー/
■39590 / inTopicNo.15)  Re[8]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (13回)-(2009/08/11(Tue) 11:31:09)
void Form1_Load(object sender, EventArgs e)
{
  webBrowser1.DocumentCompleted += delegate { button1.Text = webBrowser1.DocumentTitle; };
}
void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
  string url = comboBox1.Text;
  webBrowser1.Navigate(url);
}

↑の
webBrowser1.DocumentCompleted += delegate { button1.Text = webBrowser1.DocumentTitle; };
は、ホームページのタイトルをボタンのテキストプロパティに設定するプログラムでよいのでしょうか?

上のプログラムを動かしてみたのですが、動かないのですが。

引用返信 編集キー/
■39591 / inTopicNo.16)  Re[9]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ 魔界の仮面弁士 (1189回)-(2009/08/11(Tue) 11:37:21)
No39590 (RT さん) に返信
> webBrowser1.DocumentCompleted += delegate { button1.Text = webBrowser1.DocumentTitle; };
> は、ホームページのタイトルをボタンのテキストプロパティに設定するプログラムでよいのでしょうか?
です。

> void Form1_Load(object sender, EventArgs e)
> void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
> 上のプログラムを動かしてみたのですが、動かないのですが。
動かない、という事は、エラーすら発生しない(無反応)という意味でしょうか。

であれば、フォームのプロパティ画面で、黄色の稲妻アイコンをクリックし、これらのメソッドが
 Form の Load イベント … Form1_Load
 comboBox1 の SelectedIndexChanged イベント … comboBox1_SelectedIndexChanged
のように、それぞれのイベントに割り当てられているか、再度確認してみてください。
引用返信 編集キー/
■39595 / inTopicNo.17)  Re[10]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (14回)-(2009/08/11(Tue) 12:13:21)
>>上のプログラムを動かしてみたのですが、動かないのですが。
> 動かない、という事は、エラーすら発生しない(無反応)という意味でしょうか。
>
> であれば、フォームのプロパティ画面で、黄色の稲妻アイコンをクリックし、これらのメソッドが
>  Form の Load イベント … Form1_Load
>  comboBox1 の SelectedIndexChanged イベント … comboBox1_SelectedIndexChanged
> のように、それぞれのイベントに割り当てられているか、再度確認してみてください。

上記の問題は解決し、ボタンのテキストプロパティにタイトルが表示されました。

次に、
private void button2_Click(object sender, EventArgs e)
{
string tagName = "<TD>";
foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName(tagName))
{
string s = item.InnerText;
MessageBox.Show(s);
}

}
という教えて頂いたプログラムなのですが、動きません。アドバイスお願いします。
引用返信 編集キー/
■39597 / inTopicNo.18)  Re[11]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ 魔界の仮面弁士 (1191回)-(2009/08/11(Tue) 12:27:35)
No39595 (RT さん) に返信
> string tagName = "<TD>";
ではなく、
 string tagName = "TD";
と書けば OK です。


提示されたサンプルをそのまま写すだけではなく、そこに書かれた内容、
たとえば今回であれば GetElementsByTagName メソッドについて、
ヘルプ(MSDN ライブラリ)等で調べてみてください。

MSDN に記載されたサンプルを見れば、"<TD>" ではなく "TD" と指定する必要が
あるという事に気づく事ができるかと思いますよ。

http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.getelementsbytagname.aspx
引用返信 編集キー/
■39598 / inTopicNo.19)  Re[12]: 読み込んだウェブページのタイトルをボタンに変える。
□投稿者/ RT (15回)-(2009/08/11(Tue) 12:38:37)
2009/08/11(Tue) 12:40:15 編集(投稿者)

No39597 (魔界の仮面弁士 さん) に返信
> ■No39595 (RT さん) に返信
>>string tagName = "<TD>";
> ではなく、
>  string tagName = "TD";
> と書けば OK です。
>
>
> 提示されたサンプルをそのまま写すだけではなく、そこに書かれた内容、
> たとえば今回であれば GetElementsByTagName メソッドについて、
> ヘルプ(MSDN ライブラリ)等で調べてみてください。
>
> MSDN に記載されたサンプルを見れば、"<TD>" ではなく "TD" と指定する必要が
> あるという事に気づく事ができるかと思いますよ。
>
> http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.getelementsbytagname.aspx

アドバイスありがとうございました、タグに囲まれたテキストデータを複数読み取ることが出来ました。

次なのですが、その複数のテキストデータをフォーム上に設置した複数のボタンのテキストプロパティとして、それぞれ表示したいのですが、どうすればよいでしょうか?

引用返信 編集キー/
■39600 / inTopicNo.20)  Re[13]: 読み込んだウェブページのタイトルをボタンに変える。
 
□投稿者/ 魔界の仮面弁士 (1192回)-(2009/08/11(Tue) 12:55:25)
2009/08/11(Tue) 12:59:46 編集(投稿者)

No39598 (RT さん) に返信
> 次なのですが、そのテキストデータをフォーム上に設置したボタンのテキストプロパティとして、それぞれ表示したいのですが、どうすればよいでしょうか?

まずは、「どこが分からないのか」を明確にしていく必要がありますね。

(1) テキストデータを得る方法が分からない。
(2) フォーム上に設置したボタンのテキストプロパティに割り当てる方法が分からない。
(3) 自分なりに書いてみた(書こうとした)けれども、期待する結果にならなかった。


---

(1) テキストデータを得る方法が分からない。

これは解決済みですよね。今回の発言で
『タグに囲まれたテキストデータを読み取ることが出来ました。』
と書かれていましたし。


(2) フォーム上に設置したボタンのテキストプロパティに割り当てる方法が分からない。

これは単に、『button1.Text = "表示させるテキスト";』と記述するだけです。
「"表示させるテキスト"」の部分を、上記(1)のテキストデータに置き換えてみてください。



(3) 自分なりに書いてみたけれども、期待する結果にならなかった。

この場合には、掲示板を見ている第三者にも状況が分かるように、
自身の記述されたコードを提示してみてください。(間違ったコードのままでも構いません)

また、そのコードにどのような結果を期待して、実際の動作がどうなってしまうのかも
具体的に記述してみてください。

コンパイルエラーになるならば、どの行で何というエラーになるのか、
実行時例外であれば、どの行で何という例外が発生しているのかも重要です。


たとえば、質問内容を
  MessageBox では表示されたので、コードを***のように修正して、
  ボタンにテキストを割り当てようとしたけれども、ボタンには何も表示されなかった。
とか、
  ボタンにテキストを割り当てる際に、ボタンに入りきらないような長い文章の時には、
  ボタンのフォントを小さくしたいのだが、どのように記述して良いのか分からない。
とか、
  <TD>が複数あった場合に、それらを○○○させるために、〜〜〜というコードを
  書いてみたけれども、***の部分で―――というエラーが発生してしまった。
のように『具体的に』書いてもらえれば、何らかのアドバイスができるかと思います。
引用返信 編集キー/

次の20件>
トピック内ページ移動 / << 0 | 1 >>

管理者用

- Child Tree -