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

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

ただいまの
回答率

88.92%

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 416

TOMO6181

score 37

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

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)です。

コードは以下です。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Interactions;

namespace RightClickTest
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new ChromeDriver(@"C:\chromedriver_win32");

            driver.Navigate().GoToUrl("https://www.selenium.dev/documentation/en/webdriver/keyboard/");

            // 画面が表示されるまで10秒間待機
            driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

            // Shift + F10キーで右クリックメニュー表示
            Actions action = new Actions(driver);
            IAction keyTouch1 = action.KeyDown(Keys.Shift).SendKeys(Keys.F10).Build();
            keyTouch1.Perform();

            // ↓キーを6回押して「日本語に翻訳」にカーソルを合わせる
            IAction keyTouch2 = action.SendKeys(Keys.ArrowDown).Build();
            keyTouch2.Perform();

            IAction keyTouch3 = action.SendKeys(Keys.ArrowDown).Build();
            keyTouch3.Perform();

            IAction keyTouch4 = action.SendKeys(Keys.ArrowDown).Build();
            keyTouch4.Perform();

            IAction keyTouch5 = action.SendKeys(Keys.ArrowDown).Build();
            keyTouch5.Perform();

            IAction keyTouch6 = action.SendKeys(Keys.ArrowDown).Build();
            keyTouch6.Perform();

            IAction keyTouch7 = action.SendKeys(Keys.ArrowDown).Build();
            keyTouch7.Perform();

            // Enterキーで「日本語に翻訳」を実行する
            IAction keyEnter = action.SendKeys(Keys.Enter).Build();
            keyEnter.Perform();
        }
    }
}

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.

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2020/07/23 21:49

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

    キャンセル

  • TOMO6181

    2020/07/23 22:04

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

    キャンセル

  • m.ts10806

    2020/07/23 22:06

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

    キャンセル

回答 1

checkベストアンサー

+1

都度翻訳せずに、

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


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/23 23:46 編集

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

    キャンセル

  • 2020/07/24 00:26 編集

    まさかと思いますが、"https://translate.google.co.jp/translate?u=URLをurlencodeした物" をそのまま取得しようとしていませんよね?
    u= の後は、取得したいURL(をurlencodeした物)Lを入れます。

    キャンセル

  • 2020/07/24 05:50 編集

    私も基本的にはこのやり方を推します。
    言語も指定できるので便利ですね。
    https://translate.google.co.jp/translate?tl=en&u=https%3A%2F%2Fteratail.com%2Fquestions%2F279804
    Seleniumだと何らかの形で翻訳終わるまで待機する必要がありそうですが。

    キャンセル

  • 2020/07/24 21:42

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

    キャンセル

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る