-->

【KNIME】KNIME(ナイム)で無料でSelenium(セレニウム)起動!スクレイピング,クローリングをする方法。KNIME+Python+Selenium

2022/04/12

Knime Python

t f B! P L

・この記事の概要

KNIME(ナイム)でPython(パイソン)とSelenium(セレニウム)を使用する方法を解説。
これらのノードを使うことでより本格的なスクレイピングを行うことが可能。

Python(パイソン)のライブラリの1つであるSelenium(セレニウム)を起動し
ブラウザを操作し、XMLを抽出。
KNIME(ナイム)上にデータを出力し、その後KNIME(ナイム)上で処理を行っていく。



KNIME(ナイム)でスクレイピング

どうもシャイン社員です!
気が付くと2022年も1/4を過ぎて4月ですね!
また桜も少しずつ散って今は葉桜の季節になりましたね!

今回はKnimeを使用してスクレイピングをする方法をご紹介したいと思います。
以前の記事でKnimeのWebpage retrieverでもスクレイピングは可能ですが
実際に使用しているブラウザと表示形式が違ったり
Coockieの設定によっては表示できないページがあるため
万能とは言えません。

Knimeでスクレイピング(クローリング)する方法を解説しているページです。まずはWebpage Retrieverの設定方法を主に解説しております。FANTOM-06が発売。スクレイピングやクローリングはやり方を間違えるとサーバーに過度の負荷を与えてしまう場合や、著作権侵害、利用規約違反に反する

そこで今回はPythonのライブラリの1種である「Selenium」を用いて
スクレイピングをする方法をご紹介したいと思います。

スクレイピングをする上での注意点

スクレイピングやクローリングはやり方を間違えるとサーバーに過度の負荷を与えてしまう場合や、著作権侵害、利用規約違反に反する可能性があるので注意が必要です。

スクレイピングやクローリングにより損害が発生した場合でも、当ブログでは責任を一切負いません。
詳細は下記ページに詳しく書いてあるのでご確認ください。

KNIME(ナイム)のSelenium(セレニウム)ノードは有料

こちらのサイトでSeleniumノードがダウンロードできます。
なお有料で299EUR+税なので日本円にして4万円+税をぐらいです。

えーお金かかるんですかー!
と思われたそこのあなた。
私も同じ気持ちです。

なんとか無料でスクレイピングできないか探していたところ
どうやらPythonノード上でSeleniumを動作できれば
無料でKNIMEでスクレイピングをできるようです。

Python(パイソン)ノード上でSelenium(セレニウム)を使う

PythonノードをKnime上で使えるように設定します。
詳しくは下記のページで説明していますのでご覧ください。

今回はKnimeでPythonを利用する方法についてご紹介します! Knimeではノンコードで行列の計算処理や分析を行うことができます。同様にPythonでもコードを書いて表計算や解析を行うことができます。Pythonノードは初期のKnimeには搭載されていないノードになるため

Seleniumをインストールする

Miniconda(Anaconda)を使用してSeleniumをインストールします。

Windowsのスタートから
「Anaconda 3(64bit)」→「Anaconda Powershell Prompt」を選択します。



コマンドプロントが立ち上がりますので
下記のコマンドを打ち込みENTERキーを押します。
conda install -c conda-forge selenium


するとSeleniumのインストールが始まります。
途中Proceed([y]/n)?
と聞かれますので「y」を押して続行して、じき完了となります。

Webdriverのインストール



続いてAnaconda(Miniconda)でWebdriverをインストールします。
今回はChromeのWebdriverを使用します。

スクレイピングを実行するPCにChromeをインストールする必要がありますので
あらかじめインストールしておきましょう。

使用しているChromeのバージョンを確認する。



ChromeのWebdriverはインストールされているChromeとバージョンを合わせないと
上手く動作しません。


下記のページで自動でweb DriverのバージョンとChromeのバージョンをそろえる方法が記載されています。(2022/8/26追記)

こちらの方法を実施することによりバージョンを手動で合わせる必要がなくなります。

おはこんばんにちは、せなです。今回はSeleniumのChromeバージョンが合わない時の対処法を説明したいと思います。 前置き Seleniumを使用していて動かなくなる原因は...

まずはChromeのバージョンを確認します。

Chromeの右上の点3つのアイコンをクリックし
「ヘルプ」→「Google Chromeについて」の順にクリックします。

私の場合、バージョンは100.0.4896.75でした。



Webdriverのインストール

続いてCondaからダウンロードするWebdriverのバージョンを確認します。
こちらのサイトからCondaでインストールできるwebdriverのバージョンを確認できます。

サイトを確認したところ
100.0.4896.60.0というwebdriverのバージョンが一番現状のChromeのバージョンと
近しいですね。





ChromeのバージョンとWebdriverのバージョンは
数字の左側前半が一致していれば問題ありません。
Webdriverのバージョンは100.0.4896.60.0のものをインストールしましょう


下記のページで自動でweb DriverのバージョンとChromeのバージョンをそろえる方法が記載されています。(2022/8/26追記)

こちらの方法を実施することによりバージョンを手動で合わせる必要がなくなります。

おはこんばんにちは、せなです。今回はSeleniumのChromeバージョンが合わない時の対処法を説明したいと思います。 前置き Seleniumを使用していて動かなくなる原因は...

Miniconda上でWebdriverをインストールします。
Windowsのスタートから
「Anaconda 3(64bit)」→「Anaconda Powershell Prompt」を選択します。

conda install -c conda-forge python-chromedriver-binary==100.0.4896.60.0

と入力し、Enterを押します。

するとWebdriverのインストールが始まります。

 

SeleniumをKnimeの環境に追加する。

Knime上でのPython環境にSeleniumを追加します。
KnimeのPython環境を確認する方法は「File」→「Preferences」をクリックします。

設定ウィンドウが開きますので
左の項目の中から
「KNIME」→「Python」をクリックします。
すると下記のような画面になります。

環境名称が「py3_knime」であることを確認して
「Apply and Close」をクリックしてウィンドウを閉じます。


デフォルトの設定では
Knime上のPythonで動作するモジュールは限られている状態のため
手動で使用したいライブラリを環境に追加します。


Seleniumを手動で開発環境に追加します。

Windowsのスタートから
「Anaconda 3(64bit)」→「Anaconda Powershell Prompt」を選択します。



コマンドプロントが立ち上がりますので
conda install --name py3_knime selenium
と入力してEnterキーを押します。


いろいろとメッセージが出てきます。
Proceed([y]/n)?と聞かれますので

y
と打ってEnterキーを押します。

しばらくした後、doneとでてpy3_knimeにSeleniumを追加することが完了となります。


Seleniumを使ってGoogleの検索結果をスクレイピングする。

それでは実際にSeleniumを使ってGoogleの検索結果をスクレイピングしていきます。

Google検索で「Knimeでひねくれデータ解析」と検索し
検索結果のページ名称を一覧で表示するようにスクレイピングします。

スクレイピングに使用したワークフローはこちらから取得可能です。


#本当はURLもスクレイピングしたかったのですが、難しかったので中断。
#多分lxmlとかBeautifulsoupとか使えばできそう。

下記のようなワークフローを作成しました。


Table Creatorには下記のようにGoogle検索のアドレスと
検索ワードの「Knimeでひねくれデータ解析」を入力しています。

そしてPython Scriptのには下記のようなコードを記入します。
#Chrome driveのパスはユーザー名をご自身のPCに合わせて変更してください。

拙いコードで申し訳ないです・・・。

import pandas as pd
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome(executable_path="C:/Users/ユーザー名/miniconda3/Lib/site-packages/chromedriver_binary/chromedriver.exe")
#Webdriverの場所を指定


Table1 = []
URL = pd.DataFrame(data = input_table_1['column1'])
KEYWARD = pd.DataFrame(data = input_table_1['column2'])

browser.get(URL.iloc[0,0])
#URLのサイトを開く

time.sleep(2)
#2秒待つ

element = browser.find_element_by_name("q")
#検索テキストボックスのnameを指定

element.send_keys(KEYWARD.iloc[0,0])
#検索テキストボックスに検索ワードを入力

element.send_keys(Keys.ENTER)
#ENTERキーを押す

#time.sleep(2)
#2秒待つ

elements1 = browser.find_elements_by_xpath('//div/a/h3')
#Xpathを指定しタイトルを取得する。


for Stock in elements1:
Table1.append(Stock.text)


# Copy input to output
output_table_1 =  pd.DataFrame(data = Table1)

browser.close()
#ブラウザを閉じる

Python Scriptノードにコードを記入後Executeすると
下記のようにGoogle検索で検索した結果のページ名称一覧が出力されます。

尚抽出したいデータ(文字)を変えたい場合は

elements1 = browser.find_elements_by_xpath('//div/a/h3')

のby_xpath('ほげほげ')のほげほげの部分を抜き出したいデータの表記されているXpathに変更すればOKです。
Xpathの調べ方はChromeのデベロッパーツールを使って調べられます。

あとがき


いかがでしたでしょうか?
Python関係のKnimeノードを最近紹介しておりますが
Pythonの使い方や情報は日本語の解説が多くて助かりますね!

Knimeはまだあまり情報が多くないので
試行錯誤を繰り返しながら私自身も勉強しつつ
皆さんにご紹介できればと思っております!

それでは!

参考サイト様

Pythonコードを作成するにあたり下記のサイト様を参考にさせていただきました。

本サイトはSelenium入門者を対象とした、Seleniumの環境構築・APIの早見表サイトです。テスト自動化ツールであるSeleniumを使ったテスト方法についてご紹介いたします。




このブログを検索

注目の投稿

【KNIME】(ナイム)最強の表計算マクロソフト!KNIME(ナイム)のご紹介!使い方は?できることは?

この記事の概要 KNIME(ナイム)は表計算、マクロ動作を主機能とするフリーソフト。 エクセルと同等の機能を有しており、行列計算やグラフ描画可能。 ノードと呼ばれる箱を線で繋ぐことで計算処理を行う事が出来るため 関数名などを覚える必要はなく、処理の内容が分かりやすい。 Pytho...

スポンサー広告

スポンサー広告

QooQ