Seleniumとの出会い
WEBスクレイピングをしたいと思って調べてた時に出会いました。
スクレイピングは、他社などのウェブサイトから情報を取得することをいいます。
簡素な物でしたら、PHPでwgetコマンドで取得できていましたが、色んな壁にぶつかり易いので、こちらを使ってみると、とても便利で、簡単で重宝しています。
主にPythonやVBAで使います。
Pythonの方が、汎用は聞くのですが、業務上エクセルはとてもよく使いますのでVBAも便利。
VBAの方はと言いますと、エクセルにまとめたデータを、WEB管理画面に入力したり、またはその逆に、WEBの管理画面データより情報を取得する場合に重宝します。
説明上、chromeで説明していますが、Microsoft Edgeや、Firefoxも使えます。
WEBスクレイピング自体、色々な問題もあるようですので、注意が必要です。
「情報解析」を目的としている場合にかぎっては、著作権者の同意を受ける必要はないとも言われておりますが、相手方サイトに大きな負荷をかけてしまうような事が無いよう注意が必要ですね。
他にも著作権的な問題が生じる事もありますので、自己責任でお願いします。以下の操作は管理者権限で実行する内容を含み危険を伴う作業です。
すべての環境における動作確認等を確認しておりませんので、いかなる結果に対しても自己責任でお願いします。
また、説明は簡素化されていますので、詳細等は、ご本人で確認くださいませ。
PythonでSelenium使うための環境準備
1.pythonのインストールyum install -y python36u python36u-libs python36u-devel python36u-pip
2.確認which python3
python3 -V
3.コマンドをalias登録alias py3=’/usr/bin/python3.6′
alias pip3=’/usr/bin/pip3.6′
4.Seleniumのインストールpip3 install –upgrade pip
pip3 install selenium
5.Chromeインストール用リポジトリ追記vi /etc/yum.repos.d/google-chrome.repo
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub
6.Chromeインストールyum install google-chrome-stable –enablerepo=google-chrome
7.ドライバの更新https://sites.google.com/a/chromium.org/chromedriver/home
★バージョンを合わせる(driverDLの際に合わせたものをDL)
google-chrome-stable –version
google-chrome –version
8.ChromeDriverで文字化けしないようにインストールyum -y install libX11 GConf2 fontconfig
VBAでSelenium使うための環境準備
1.Seleniumのインストールこちらよりダウンロード
https://florentbr.github.io/SeleniumBasic/
確認した時点では、こちらが最新
SeleniumBasic v2.0.9.0
2.Chromeドライバーのインストール 更新ファイルの保存場所:C:\Users\「ユーザー名」\AppData\Local\SeleniumBasic
https://sites.google.com/a/chromium.org/chromedriver/home
3.ドライバの更新https://sites.google.com/a/chromium.org/chromedriver/home
※Windowsで使っているchromeが更新されるとdriverも更新する必要がある
4.VBA設定Excel VBA エディタの「ツール」→「Selenium Type Library」にチェック
5.chormeDriverが動かない場合:必要なバージョンの .NET Framework がインストールされていない。
上記環境では .NET Framework 3.5
また、Windows10では、「Windows の機能の有効化」より有効にする必要がある
PythonのSeleniumサンプル
#要素の取得例
driver.find_element_by_name(“q”)
driver.find_elements(By.TAG_NAME, “a”):
driver.find_element_by_css_selector(‘.dtl.yjSt’).text
driver.find_element(By.CLASS_NAME, “postAllMouth”)
driver.find_element_by_tag_name(“table”).find_elements_by_tag_name(“tr”)
driver.find_element_by_id(“recentcomments”)
#全画面スクリーンショット
driver.get(‘https://**’)
#ページサイズを画面サイズに設定する
page_width = driver.execute_script(‘return document.body.scrollWidth’)
page_height = driver.execute_script(‘return document.body.scrollHeight’)
driver.set_window_size(page_width, page_height)
driver.implicitly_wait(20)
#キャプチャ
driver.save_screenshot(filePath)
‘テーブルデータの取得
table = find_element_by_tag_name(“table”)
rows = table.find_elements_by_tag_name(“tr”)
for row in rows:
cells = row.find_elements_by_tag_name(“td”)
for col in cells:
print col.text
VBAのSeleniumサンプル
VBAは、変数を宣言(Dim driver As ChromeDriver)すると、補完機能が使えます。
‘宣言
Dim driver As New ChromeDrive
driver.Get (“https://***”)
・要素の取得例
‘テキスト取得
Dim eleText as String
eleText = driver.FindElementByTag(“h3”).text
eleText = driver.FindElementByName(“form1”).FindElementByName(“date”)
eleText = driver.FindElementsByTag(1).FindElementByName(“date”)
eleText = driver.FindElementsByClass(“conf_list”)(4).text
Dim ele As WebElement
ele = driver.FindElementsByTag(1)
eleText = ele.FindElementByName(“date”).text
‘リンクアドレス
href = ele.FindElementsByTag(“a”)(2).Attribute(“href”)
‘optionタグ
For Each ele In driver.FindElementByName(“FORM”).FindElementsByTag(“option”)
MsgBox (opTag.Value)
MsgBox (opTag.text)
Next opTag
‘テーブルデータを配列に格納
Dim tableData As Variant
tableData = driver.FindElementByTag(“table”).AsTable.data
For j = 1 To UBound(tableData, 1) ‘1次元の要素数の数を繰り返す
ReDim row(UBound(tableData, 2))
For k = 1 To UBound(tableData, 2) ‘2次元の要素数の数を繰り返す
row(k) = (tableData(j, k))
Next
Next
ElementとElementsは別物ですのでご注意。
- 2020/11/04(水) 16:59:50|
- Selenium
-
| トラックバック:0
-
| コメント:0
SSDが安くなってきて、自分のメイン機(デスクトップ)が遅く感じてきたので、HDDからSSDに変更してみた。
http://kakaku.com/item/K0000362036/
システムドライブ用として利用するので、120GBくらいで十分かなって思って購入。
よくWEBでみるベンチテストのプログラムをインストールしてHDDのスピードを確認してみた。
交換後に確認した結果

思って頼り、速度が出てない
調べてみると、レジストリの設定を変更して、BIOSの設定を変える必要があるみたいだ。
順番に、レジストリのみを変更した結果が以下の図だ。
レジストリは
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci\Start
ここの値を0にするってことでしたが、自分の環境では、CurrentControlSetが、CurrentControlSet001とCurrentControlSet002とあった。
わからないので両方の場所のstartの値を0にしてみた。
結果、以下のようになった。

で、BIOSの設定まで変更
SSDはAHCIモードで利用しないとあまり意味がないって事なので、BIOSで設定。

私のマザーボード(P7P55D)がSATAⅢ(6GB/s)に対応されてないので、この辺が限界みたい。
SATAⅢに対応すれば、よく見るベンチテストの結果と同様の結果が得られるみたいです。
とりあえず、今のところ、これが限界なので、これで使っていこう
テーマ:日記 - ジャンル:日記
- 2012/11/04(日) 22:37:20|
- 今日のお仕事
-
| トラックバック:0
-
| コメント:1
WordPress インストールメモ
動作環境WordPress 3.2 日本語版
PHP バージョン 5.2.4 以上
MySQL バージョン 5.0 以上
ということなので、PHPとMYSQLのバージョン確認
rpm -qa |grep php
rpm -qa |grep mysql問題なければ、ファイルのダウンロード(http://ja.wordpress.org/latest-ja.tar.gz)
ファイルのダウンロード
wget http://ja.wordpress.org/latest-ja.tar.gzサービスが不足してたら、インストールする。
yum -y install yum-fastestmirror
yum -y install php php-mysql httpd mysql mysql-server php-mbstring make gcc httpd-develドキュメントルートの確認
grep DocumentRoot /etc/httpd/conf/httpd.confファイルの解凍
tar zxvf latest-ja.tar.gzファイルの移動
mv ./wordpress/* /var/www/html/wp/MYSQLの準備
DB作成
create database DB名; user 作成
GRANT ALL ON DB名.* TO ユーザー名@"localhost" IDENTIFIED BY 'パスワード'; ※:rootのパスワードは設定しておきましょう
SET PASSWORD FOR root@localhost=PASSWORD('パスワード');準備が出来たら、httpで接続し、ブラウザより設定
wordpressのバックアップ
①phpファイル等とDBをバックアップ
・インストールしたディレクトリのバックアップ
・MYSQLで作成したDBをバックアップバックアップデータを利用する際の注意点(別ドメインで利用する場合)
旧ドメインで保存されてる、URL情報などを書き換える必要がある。
移動先のサーバーでは、WORDPRESSをインストールまでする。
バックアップしてある、php郡を上書き。
バックアップしてあるDBをリストア。
DBの更新クエリ
update wp_posts set post_content=replace(post_content,'旧ドメイン','新ドメイン');
update wp_posts set guid=replace(guid,'旧ドメイン','新ドメイン');
update wp_options set option_value=replace(option_value,'旧ドメイン','新ドメイン');この辺のテーブル内を更新すれば問題ないと思う。
こんな感じで、後は適度にファイルとDBをバックアップしておけば、安心。
テーマ:Linux - ジャンル:コンピュータ
- 2012/06/07(木) 14:49:26|
- Server
-
| トラックバック:0
-
| コメント:0