※このページは2019/7/14に作成されました。
こんにちは、ケネです。
この記事ではNode.jsのライブラリPuppeteerを使って文字入力する場合の注意事項について解説します。
外部サーバにPuppeteerを設定してブラウザの自動操作をさせる際にサーバの設定によっては日本語入力が反転してしまう場合があります。
(「こんにちは」と入力したいのに「はちにんこ」となってしまう)
同じ事象で困っている人はぜひ参考にしてください。
Contents
page.type()で日本語入力が反転してしまう原因
以下の原因が当てはまる人はこの記事で解決できます。
日本語入力のみで発生
日本語については「こんにちは」が「はちにんこ」に反転してしまいましたが、英語については反転しませんでした。
(「Hello」は「Hello」のまま)
この切り分けができたことで日本語入力(言語設定)に問題があると推測できます。
外部サーバで発生
私の場合は外部サーバ(CentOS7)で発生していましたが、MacBookで動かしたところ問題は発生しませんでした。
そのため、Puppeteerの設定ではなく、外部サーバ(CentOS7)の設定が問題と推測できます。
inputタグで発生
条件はpage.type()でinputタグに日本語文字入力をした場合です。
inputタグの例 <input type="text" name="username" placeholder="username">
textareaタグ<textarea>では発生しませんでした。
page.type()で日本語入力が反転してしまう際の対処法
CentOS7の言語設定を日本語対応にする
CentOS7の言語設定を確認します。
localeがLinuxデフォルトのCとなっているとPuppeteerの日本語入力が反転します。
「ja_JP.utf8」などの日本語対応の言語設定に変更します。
CentOS7の言語設定を確認する
localectl statusコマンドか、/etc/locale.confを参照して確認します。
$ localectl status System Locale: LANG=C VC Keymap: jp106 X11 Layout: jp $ cat /etc/locale.conf LANG=C
この場合、Cとなっているため変更が必要です。
CentOS7の言語設定を変更する
localectl set-localeコマンドで「ja_JP.utf8」に変更します。
変更は永続的に反映されます。
$ sudo localectl set-locale LANG=ja_JP.utf8 $ localectl status System Locale: LANG=ja_JP.utf8 VC Keymap: jp106 X11 Layout: jp $ cat /etc/locale.conf LANG=ja_JP.utf8
「ja_JP.utf8」に更新されたことが確認できました。
言語変更できないときの暫定対処
権限などの問題でサーバの言語設定が変更できない場合、暫定的に文字列を反転させる方法があります。
(文字列).split(“”).reverse().join(“”)で対応できます。
let inputValue = "はちにんこ" let inputValueReversed = inputValue.split("").reverse().join(""); // こんにちは
まとめ
Puppeteerでinputタグの文字列が反転する場合、サーバの日本語設定を変更することで対応できます。
Puppeteerを学習できる数少ない書籍です。
Puppeteer入門 スクレイピング+Web操作自動処理プログラミング
- 作者: ヴェネチア冒険團,美崎薫,小原亮一,酒井一成
- 出版社/メーカー: 秀和システム
- 発売日: 2018/09/19
- メディア: 単行本
- この商品を含むブログを見る
コメントを残す