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

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

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

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2527閲覧

Seleniumでページの日本語翻訳を行いたい

TOMO6181

総合スコア39

C#

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

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2020/07/23 12:31

外国語のページをスクレイピングする際、日本語に翻訳しながら文章を取得したいと思っています。

Seleniumにより右クリックメニューを出して「日本語に翻訳」を選択することで翻訳を行う方法を考えています。
(ただし、Seleniumには右クリックを押すAPIは見当たらないので、Shift+F10キーで代用しようとしています。)
流れとしては、以下の通りです。
1.対象のページに飛ぶ
2.Shift+F10キーを押して右クリックメニューを表示する
3.右クリックメニューでカーソル移動させて「日本語に翻訳」を選択

使用しているブラウザはGoogle Chromeでバージョンは「84.0.4147.89」、chromedriver.exeのバージョンは「84.0.4147.30」です。
OSはWindows 10(64bit)です。

コードは以下です。

C#

1using System; 2using System.Collections.Generic; 3using System.Linq; 4using System.Text; 5using System.Threading.Tasks; 6using OpenQA.Selenium; 7using OpenQA.Selenium.Chrome; 8using OpenQA.Selenium.Interactions; 9 10namespace RightClickTest 11{ 12 class Program 13 { 14 static void Main(string[] args) 15 { 16 IWebDriver driver = new ChromeDriver(@"C:\chromedriver_win32"); 17 18 driver.Navigate().GoToUrl("https://www.selenium.dev/documentation/en/webdriver/keyboard/"); 19 20 // 画面が表示されるまで10秒間待機 21 driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10); 22 23 // Shift + F10キーで右クリックメニュー表示 24 Actions action = new Actions(driver); 25 IAction keyTouch1 = action.KeyDown(Keys.Shift).SendKeys(Keys.F10).Build(); 26 keyTouch1.Perform(); 27 28 // ↓キーを6回押して「日本語に翻訳」にカーソルを合わせる 29 IAction keyTouch2 = action.SendKeys(Keys.ArrowDown).Build(); 30 keyTouch2.Perform(); 31 32 IAction keyTouch3 = action.SendKeys(Keys.ArrowDown).Build(); 33 keyTouch3.Perform(); 34 35 IAction keyTouch4 = action.SendKeys(Keys.ArrowDown).Build(); 36 keyTouch4.Perform(); 37 38 IAction keyTouch5 = action.SendKeys(Keys.ArrowDown).Build(); 39 keyTouch5.Perform(); 40 41 IAction keyTouch6 = action.SendKeys(Keys.ArrowDown).Build(); 42 keyTouch6.Perform(); 43 44 IAction keyTouch7 = action.SendKeys(Keys.ArrowDown).Build(); 45 keyTouch7.Perform(); 46 47 // Enterキーで「日本語に翻訳」を実行する 48 IAction keyEnter = action.SendKeys(Keys.Enter).Build(); 49 keyEnter.Perform(); 50 } 51 } 52} 53

Seleniumのドキュメントのページに遷移して日本語に翻訳するコードです。
上記コードを実行したのですが、ページが表示されるだけで右クリックメニューの表示から先ができません。
実行したところ、コマンドプロンプトには下記のようなエラーが出ていました。

DevTools listening on ws://127.0.0.1:56495/devtools/browser/b1ef9861-af69-43fa-b3ec-0fa0f32388fa

[12684:1232:0723/210820.541:ERROR:device_event_log_impl.cc(208)] [21:08:20.541] Bluetooth: bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.

コードの間違い、及び日本語に翻訳してスクレイピングする方法が分かる方がおられましたら、宜しくお願い致します。

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

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

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

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

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

m.ts10806

2020/07/23 12:49

果たして、その対象とするWebサイトはスクレイピングを許可しているのでしょうか。
TOMO6181

2020/07/23 13:04

本当にスクレイピングしたいサイトは客先のサイトなので、客先から許可はあります。 Seleniumのはテスト用です。
m.ts10806

2020/07/23 13:06

提示されているコードが「Seleniumのドキュメントのページに遷移して日本語に翻訳するコード」とあったので、提示しているものが本当に問題ないのかは一考いただきたく。
guest

回答1

0

ベストアンサー

都度翻訳せずに、

plain

1https://translate.google.co.jp/translate?u=URLをurlencodeした物

のページを取得すれば良いと思います。

投稿2020/07/23 14:06

otn

総合スコア84553

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

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

TOMO6181

2020/07/23 14:48 編集

御回答ありがとうございます。 「https://translate.google.co.jp/translate?u=URLをurlencodeした物」 をURLに入力しても「URLは無効」と出てきますが、このページを取得するとは具体的にどのような操作が必要となるかお教えいただいても宜しいでしょうか? イメージとしては、Google翻訳のテキストに貼り付けて翻訳の操作を行うものかなと思ってます。
TOMO6181

2020/07/24 12:42

ありがとうございます。 Google Translateにこのような使い方があると知り、大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問