snovaのブログ

主にプログラミングやデジタルコンテンツについて書きます。最近はPython, Flutter, VRに興味があります。

Pythonのseleniumライブラリを使ってJuliaLangでwebスクレイピング

概要

Juliaは科学技術計算用に最適化されたプログラミング言語です。一般的にPythonよりも速いと言われています。ライブラリはpythonに劣るかもしれませんが、pycallを使うことによりPythonのライブラリも参照できます。今回はpycallを使ってwebスクレイピングを実践してみます。

目次

計算環境

  • OS : macOS Mojave
  • JuliaLang : 1.1.0
  • chrome driver : 2.46

JuliaLangのインストール

公式サイトから自分のOSに合ったパッケージをダウンロード、インストールすればよいです。Github上からcloneする方法もあるらしいですが、今回は割愛します。

Juliaの実行方法

macだったら、julia.appを実行します。または、exec '/Applications/Julia-1.1.app/Contents/Resources/julia/bin/julia'をターミナルで実行することで起動できます。

PyCallの導入

Julia 1.0からパッケージの管理方法が変わっています。これまではREPL(Juliaの実行モード)でPkg.add("Example")としていましたが、juliaモードで]を打つことでパッケージ管理モードに入り、add Exampleと打つことでパッケージを導入できます。

julia> ] # パッケージ管理モード
(v1.1) pkg> add PyCall # PyCallの導入

ちなみに、juliaモードでセミコロンを打つとshellモードに、Ctrl + cでjuliaモードになります。 (なお、juliaを終了するときはCtrl + d)

PyCallの使い方

READMEに従って、pythonのmathライブラリを参照してみます。

using PyCall
@pyimport math
math.sin(math.pi / 4) - sin(pi / 4)  # returns 0.0

返り値が0.0ならOKです。

seleniumをpycallに導入

標準ライブラリなら特に問題ないのですが、もしpythonライブラリを追加で使いたいなら、pyimport_condaでライブラリを導入します。

using PyCall
pyimport_conda("selenium", "selenium")

次に、web driverを入れます。chromeを使う場合、こちらのサイトからchrome driverをダウンロードして展開します。chrome driverのバージョンが新しすぎると、動かないことがあるので注意。

seleniumをpycallで起動

下にseleniumを起動するjuliaプログラムを示します。このとき、pythonと違ってURLやパスなどはダブルクオーテーションで区切ること、juliaにtime関数があるみたいなのでpythonのtime関数を使うときには名前を変える(今回はpytimeにしています)ことに注意してください。なお、以前の記事seleniumについての紹介はしていますので、seleniumについての説明は省きます。

using PyCall
@pyimport selenium.webdriver as webdriver
@pyimport time as pytime

driver = webdriver.Chrome(executable_path="Chrome Driverがあるパス")
get_url = "https://snova301.hatenablog.com/"
driver.get(get_url) # webページを開く
pytime.sleep(2)
driver.quit() # ブラウザを閉じる

実行できていたら成功です。

まとめ

seleniumを使ってJuliaLangでwebデータを参照する方法を示しました。なお、seleniumを使わずともJuliaLangでwebスクレイピングする方法はありますが、本記事では割愛します。また、今回はseleniumを使いましたが他のpythonライブラリもJuliaLangで実行できるので、JuliaLangってすごいなと思いました。

参考文献

Google Play and the Google Play logo are trademarks of Google LLC.