質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

2回答

1253閲覧

C#、WebBrowserで、現在画面に見えている文字列だけをコピーしたい(Ctrl+Aのように)

ElecDove

総合スコア254

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

1クリップ

投稿2018/03/24 15:00

編集2018/03/24 15:39

WPF上でWinFormのWebBrowserコントロールを使用しています。

アクセスしたWEBサイトの、
現在画面に見えている文字列だけをコピーしたいのですが
どうすればよいでしょうか

・HTMLタグなどは一切不要です(むしろ含まれてほしくない)
・動的に追加/削除された文字列などは考慮しなくてOKです。あくまで、その時に表示されている文字列達。
・JavaScriptのソースたちも不要です。
・iFrameの中身も不要です。(含まれても含まれなくてもどちらでもOK)

人間の操作であればCtrl+A等で全選択してCopyすればよいのですが…。


document.getElementsByTagName("body")[0].InnerText(or InnerHtml)
で取得したものに対して正規表現でタグを取り除く方法では、
Display:none等に指定されている文字列が含まれてしまうのでNGでした。
それ以外については取り除けるのでOKなのですが…。

よろしくお願いします。


この方法でよいかわかりませんが、とりあえず目的の動作ができました。
ほかのやり方の回答が寄せられるかもしれないのでしばらく自己解決にはしないでおきます

C#

1WebBrowser1.Document.ExecCommand("Selectall", false, null) 2WebBrowser1.Document.ExecCommand("Copy", false, null); 3string text = (string)data.GetData(System.Windows.DataFormats.Text);

クリップボードを経由しますし、スマートとは言えませんが、とりあえずこれで目的の動作はできました。
たまにフリーズしたりするみたいなので、もう少し検証が必要かな、、、と思っております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

jqueryを追加で読み込めば何でもできそうですけどね。
可視の要素だけを選択してテキストを取り出すとか。

投稿2018/05/24 04:21

tekka

総合スコア514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

スクレイピングと同じことをやりたいってことですね
となると、ヘッドレスブラウザ使って、とかなんとか、コードだけでは済まなくなりますが、
そこらへんのキーワードでぐぐるとしあわせになれるかもしれません

投稿2018/03/24 15:45

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ElecDove

2018/03/25 04:01

回答ありがとうございます Seleniumとか色々出てきました 前に聞いたことあったような…笑 いろいろ試してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問