読者です 読者をやめる 読者になる 読者になる

みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Unity, Python, Processingなどのプログラミングや,脱獄, hackintoshなど

トップ / 記事一覧 / カテゴリ

Selenium3のChromeDriverでpdfをダウンロードする

Chromeにはpdfを表示するための機能が搭載されており,ChromeDriverでpdfにアクセスしても表示するだけでダウンロードされない.いろいろな拡張機能を無効にすることで,pdfをダウンロードできるようにする.

環境: MacOS 10.12.4, ChromeDriver 2.29 (Chrome 58.0), Selenium 3

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = webdriver.ChromeOptions()
options.add_experimental_option("prefs", {
  "download.default_directory": 保存先,
  "download.prompt_for_download": False,
  "download.directory_upgrade": True,
  "plugins.plugins_disabled": ["Chrome PDF Viewer"],
  "plugins.always_open_pdf_externally": True
})
options.add_argument("--disable-extensions")
options.add_argument("--disable-print-preview")

driver = webdriver.Chrome(chrome_options=options)
driver.get("http://example.com/sample.pdf")

これでpdfを直接ダウンロードできるようになります.

Selenium 3 をPythonで使う

最近Seleniumがversion 3になったようで,pythonのpipでインストールしてもそのまま使えなかったので,自分用にメモ.

環境

  • MacOS 10.12
  • Python 3.5.2
  • Selenium 3.0.2
  • Firefox 50.1.0

インストール

sudo pip3 install selenium

Mozillaのgeckodriverをダウンロードする.

Releases · mozilla/geckodriver · GitHub

解凍してからgeckodriverを/user/local/binにコピーする.

Pythonで以下を実行

browser = webdriver.Firefox()
browser.get('http://www.yahoo.com')

Yahooが表示されることを確認したらインストール完了.

Error

geckodriverをインストールしないと.

selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH. 

と怒られる.

VMware上のWindows7で公的認証サービスとe-Taxを使う

普段はMacを使っているけど,公的認証サービスとかe-Taxなんて1年に1度しか使わないのに,ドライバーやクライアントソフトをインストールするともれなくJREがついてくるので,何とかしようと思い,何とかしてみたので記事にまとめました.

公的個人認証サービス ポータルサイト

普段からJavaが動いているのは気持ち悪いので,VMware FusionにWindows7をインストールし,セキュリティソフトなどで防御を固めた上で公的認証サービスのクライアントソフトをインストールしました.

機器

みーは以下のICカードリーダーを購入しました.Amazonで2000円しました.税金を収めるために2000円払うというのは残念な話です.マイナンバーカード対応となっていたので,これにしました.

NTTコミュニケーションズ 接触型 USBタイプ ICカード リーダーライター ACR39-NTTCom

NTTコミュニケーションズ 接触型 USBタイプ ICカード リーダーライター ACR39-NTTCom

ゲストOSに接続する.

このカードリーダーは専用のドライバーが必要みたいで,下記リンクからダウンロードし,インストールします.ゲストOSにドライバーをインストールするのはもちろんですが,ホストOS (=MacOS)でも認識されないとVMwareが認識しないので,Macにもドライバーをインストールします.

利用者クライアントソフトのダウンロード : 公的個人認証サービス ポータルサイト

f:id:atsuhiro-me:20170104004637p:plain

上の画像で,Adcanced Card ACR39U ICC Readerというのがカードリーダーのことです.windowsに接続します.

使ってみた

無事に使えました.3月の確定申告に間に合ってよかった.

f:id:atsuhiro-me:20170104005024j:plain

f:id:atsuhiro-me:20170104005600p:plain

クリーンインストールしたWindows7のWindows Updateが終わらない

クリーンインストールしたWindows7では,Windows Updateが全く進まないことがよく起こります.

最初に明示的に幾つかのUpdateを適応する必要があります.

Microsoft Update Catalogにアクセスして,下記のUpdateをダウンロードしてから,インターネットと接続を切った状態で,上から順番にインストールしていきます.

  • Windows Update Diagnostic

    • 最初にこれを実行することで,Windows Updateをリセットします.
  • KB3177467

    • Windows Update Clientの最新版(2016.1.3現在)をインストールするために必要
  • KB3172605

    • Windows Update Clientの最新版(2016.1.3現在)
  • KB3125574

    • Windows Updateの累積的な修正パッケージ (476.9 MB)

最後のファイルは500 Mbytesの巨大なファイルなので,安定したネットワークに接続してからダウンロードをしてください.

これらのインストールが終了したら,再起動してからインターネットに接続し,Windows Updateを自動で実行すれば完了です.

参考

Herokuのローカル開発環境の整備

VMware上のUbuntu 16.04 LSTにHerokuのローカル開発環境を作成するためのメモ.PythonのDjangoを使ったWebアプリケーションの開発を目的とした記事です.

パッケージのバージョンなどは現時点でのもので,適宜読み替えてください.

VMware FusionのゲストOSで作業をするメリット

Macに直接HerokuやPostgreSQLをインストールしてしまうと,不要なサービスが常時起動することになります.Macで映画鑑賞している間にPostgresサーバーが起動しているのは気持ちが悪いです.複数の開発環境を作成する方法としてPythonのvirtualenvなどが有名ですが,ゲストOSを複数用意するのが最も頭を使わなくて済むとみーは考えています.

Mac上に開発用のファイルを置いて,テキスト編集などはMacで行い,共有フォルダを用いてゲストOSからMac上のファイルを参照できるようにして,実行はゲストOSで行うのが簡単だと考えます.

Ubuntuの用意

Ubuntuならばapt-getで簡単にCLIからインストールができるので,ゲストOSはUbuntuを使います.

Heroku Command Line Interfaceのインストール

UbuntuでHeroku Command Line Interfaceをインストールします.

Getting Started on Heroku with Python | Heroku Dev Center

PostgreSQLのインストール,設定

DjangoでPostgreSQLを使うにはpsycopg2が必要で,postgresql-server-dev-9.5に依存しています.

sudo apt-get install postgresql postgresql-server-dev-9.5

ここではpsql 9.5.5を使用しています.

PostgreSQLをCLIで操作するのは面倒などで,pgAdmin IIIなど,GUIツールを利用するのがおすすめです.

Python3のインストール

python3をインストールし,pip3から適宜必要なモジュールをインストールします.

$ sudo apt-get install python3-pip
$ sudo pip3 install Django psycopg2

PostgreSQLの初期設定

PostgreSQLはデフォルトでpostgresという名前のユーザーが存在するので,このユーザーとしてログインします.

$ sudo -i -u postgres

PostgreSQLにアクセスするためのユーザーを作成します.-Pはパスワードを設定するオプションで,-dはデータベースの作成を許可するオプションです.

$ createuser --interactive -P -d
Enter name of role to add: xxx
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) y

これでxxxというユーザーが作成できました.pgAdmin IIIから,新規に作成したユーザーでアクセスします.Ubuntuではpeer authenticationという機能が存在するため,Ubuntuのユーザーとは独立したユーザー名とパスワードでログインするにはHostをlocalhostと明示する必要があります.

VMware FusionでUbuntu 16.04の共有フォルダを有効にする

VMware FusionでUbuntu 16.04の共有フォルダがうまく動かなかったのですが,解決できたのでその方法をまとめておきます.

バージョン

  • VMware Fusion 8.5.3 [Download]
  • Ubuntu 16.04.1 LTS (Xenial Xerus) [Download]
  • open-vm-tools

VMwareのヘルプの方法ではうまくいかない

公式ヘルプには以下のようにすればよいと書いてありますが,うまく行きませんでした./mnt/hgfsが存在しないとエラーが出ます.

Launch VMware Fusion. *1
Power off the virtual machine.
Click Virtual Machine > Settings.
Click Sharing.
In Fusion 8.x and 7.x, select Enable Shared Folders. In Fusion 6.x, 5.x and 4.x, turn ON the Shared folders option. In Fusion 3.x, select the Share folders on your Mac option.
Click the + button.
Enter the share name, browse to the folder on the Mac that will be shared with the virtual machine and click Add.
Click Apply, then OK.
Power on the virtual machine.
Open the Terminal utility in the guest operating system.
Browse to the Host Guest File System (HGFS) folder by running this command:
cd /mnt/hgfs

解決方法

VMware FusionにUbuntuをインストールします.ゲストOSにはVMware toolsをインストールしますが,最近はopen-vm-toolsというオープンソースのものが推奨されている*2ようですので,これを使います.

$ sudo apt-get install open-vm-tools-desktop

これで以下のパッケージがインストールされます.

The following additional packages will be installed:
  dkms libdumbnet1 libgtkmm-2.4-1v5 libmspack0 open-vm-tools
  open-vm-tools-dkms zerofree
The following NEW packages will be installed:
  dkms libdumbnet1 libgtkmm-2.4-1v5 libmspack0 open-vm-tools
  open-vm-tools-desktop open-vm-tools-dkms zerofree

インストールが完了したら再起動します.VMware Fusionの設定画面から共有フォルダを有効にします.

f:id:atsuhiro-me:20161223141140p:plain

以下を実行します.

$ mkdir ~/share
$ /usr/bin/vmhgfs-fuse -o auto_unmount .host:/ ~/share

これで,ホームディレクトリのshareというフォルダーにMacのフォルダーがマウントされました.

f:id:atsuhiro-me:20161223141610p:plain

あとは/etc/rc.local に登録して起動時に自動実行するように設定すれば完了です.