価格.comの最安値情報を取得してくるExcelVBAマクロ
久々の更新。
Excel VBAで価格.comの最安値情報を取得してくるマクロのメモ書き。
やりたいこと
選択範囲の型番で価格.comの最安値情報を検索し、同じ行の隣のセルに入力したい。
参照設定
以下を有効にする:
- Microsoft HTML Object Library
- Microsoft Internet Controls
- Microsoft VBScript Reqular Expressions 5.5
- Microsoft Script Control 1.0
クラスモジュール
'' ' KakakuComSearchItem ' ' 取得した価格情報を保持しておくためのクラス ' Public self As HTMLDivElement Public name As String Public price As String Function setItem(element As HTMLDivElement) Set self = element name = self.getElementsByClassName("itemnameN").item(0).textContent price = self.getElementsByClassName("yen").item(0).textContent ' 価格から余計な文字を取り除く Dim regex As New RegExp regex.Pattern = "[^0-9]" regex.Global = True price = regex.Replace(price, "") End Function
標準モジュール
'' ' Module 1 ' ' 最安値情報検索URL (%sの部分を実行時に検索語句に置換する) Const SEARCH_BASE_URL = "http://kakaku.com/search_results/%s" Sub 価格comの最安値情報取得() ' encodeURIComponent関数で検索語句をURLエンコードするためにJSをロード Dim js As New ScriptControl js.Language = "JScript" ' 不可視モードでIEを呼び出す Dim ie As New InternetExplorer ie.Visible = False Dim item As New KakakuComSearchItem Dim c As Range For Each c In Selection Set item = searchItem(c.Value, ie, js) c.Offset(0, 1).Value = item.name c.Offset(0, 2).Value = item.price Next ' Quitしないとマクロが終了してもIEのプロセスが残り続ける ie.Quit Set js = Nothing Set ie = Nothing MsgBox "Finished." End Sub Private Function searchItem(word As String, ie As InternetExplorer, js As ScriptControl) As KakakuComSearchItem Dim url As String url = Replace(SEARCH_BASE_URL, "%s", js.CodeObject.encodeURIComponent(word)) ' 第一引数(url)だけだとGET, 第四引数(body)を含めるとPOSTでリクエストするみたい ' sort=priceb&act=Sort の設定が「価格昇順」を意味するっぽい ie.navigate url, , , "n=30&l=1&sort=priceb&act=Sort" ' 応答あるまで待機 wait ie Dim document As HTMLDocument Set document = ie.document Dim item As New KakakuComSearchItem If document.getElementsByClassName("item01").Length = 0 Then item.name = "該当無し" item.price = "該当無し" Else item.setItem document.getElementsByClassName("item01").item(0) End If Set searchItem = item End Function Private Function wait(ie As InternetExplorer) Do While ie.Busy = True Or ie.readyState < READYSTATE_COMPLETE DoEvents sleep 500 Loop End Function Private Function sleep(msec As Long) Application.wait [Now()] + msec / 86400000 End Function
以上。
Raspberry Piを入手してからmuninを入れるまで
ひっさびさの更新。まさかの2年ぶり。
自宅のに無線LAN接続のRaspberry Piを置いて、muninで状態を監視したいと思った。
0. 環境等
- 使用したRaspberry Pi は「Raspberry Pi 2 Model B」。余ってたのを使ったので、別に何でもいい。余談だけど、最近Raspberry Pi Zero注文してそろそろ来るらしい。うきうき。
- 使用した無線LANアダプタは「PLANEX GW-USNANO2A」。初期設定無しでそのまま使えた。
- McroSDカードは適当に転がってた8GBのを。
PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A (FFP)
- 出版社/メーカー: プラネックス
- 発売日: 2013/09/06
- メディア: Personal Computers
- この商品を含むブログを見る
1. Raspberry PiのUSBポートに無線LANアダプタを装着
2. NOOBSダウンロード、すべてのファイルをSDにコピー
https://www.raspberrypi.org/downloads/noobs/
現時点のバージョン等: Version:2.0.0 Release date:2016-10-05 Download ZIP SHA-1: 825d273584c0139875901677db7acfe519506991
3. なんか適当にRaspbianのインストール
起動時はCLI(黒画面)を表示するように設定しておく。
以降、ルートユーザはpi、パスワードはraspberry、起動時に自動ログインする設定を前提とする。
変更した場合は、適宜読み替える。
なお、無線LANアダプタは何もしなくても使える状態になっていたので設定は省略。
4. 無線LAN アクセスポイント(AP)が見えるか確認
pi@raspberrypi:~ $ sudo iwlist wlan0 scan|grep ESSID ESSID:"自宅のアクセスポイントのSSID" ESSID:"しらないやつ"
5. 無線LANAPに接続する設定
pi@raspberrypi:~ $ sudo sh -c "wpa_passphrase アクセスポイントのSSID パスワード >> /etc/wpa_supplicant/wpa_supplicant.conf"
6. 以下のような感じで設定された。
pi@raspberrypi:~ $ sudo cat /etc/wpa_supplicant/wpa_supplicant.conf ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="アクセスポイントのSSID" #psk="パスワード" psk=暗号化されたパスワード }
※ #psk="パスワード"は不要なので消しても良い
7. 一度再起動して、ネットにつながるか確認
pi@raspberrypi:~ $ sudo reboot ~再起動まで待つ。ifdown/ifupでも問題ないが、念のため。~ pi@raspberrypi:~ $ sudo ping -c 1 192.168.0.1 PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data. 64 bytes from 192.168.0.1: icmp_seq=1 ttl=255 time=6.07 ms --- 192.168.0.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 6.070/6.070/6.070/0.000 ms pi@raspberrypi:~ $ sudo ping -c 1 google.com PING google.com (172.217.25.78) 56(84) bytes of data. 64 bytes from nrt13s50-in-f78.1e100.net (172.217.25.78): icmp_seq=1 ttl=53 time=11.4 ms --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 11.478/11.478/11.478/0.000 ms
8. 固定IP設定
piraspberrypi:~ $ sudo vi /etc/dhcpcd.conf
以下を追記。
interface wlan0 static ip_address=192.168.0.200/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 static domain_search=192.168.0.1
9. 無線LANの再起動と設定確認
pi@raspberrypi:~ $ sudo ifdown wlan0 pi@raspberrypi:~ $ sudo ifup wlan0 pi@raspberrypi:~ $ sudo iwconfig wlan0 IEEE 802.11bgn ESSID:"アクセスポイントのSSID" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency:2.437 GHz Access Point: XX:XX:XX:XX:XX:XX Bit Rate:150 Mb/s Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Encryption key:****-****-****-****-****-****-****-**** Security mode:open Power Management:off Link Quality=100/100 Signal level=71/100 Noise level=0/100 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 lo no wireless extensions. eth0 no wireless extensions. pi@raspberrypi:~ $ sudo ifconfig eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet6 addr: fe80::4220:10d8:fc49:c467/64 Scope:Link UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:12617 errors:0 dropped:0 overruns:0 frame:0 TX packets:12617 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:1450166 (1.3 MiB) TX bytes:1450166 (1.3 MiB) wlan0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX inet addr:192.168.0.200 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: 240f:2:591b:1:2deb:432f:d586:9709/64 Scope:Global inet6 addr: fe80::8a4a:a14f:df10:32b4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:340 errors:0 dropped:82 overruns:0 frame:0 TX packets:182 errors:0 dropped:1 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1985600 (1.8 MiB) TX bytes:2415159 (2.3 MiB)
10. とりあえず更新
pi@raspberrypi:~ $ sudo apt-get update -y pi@raspberrypi:~ $ sudo apt-get upgrade -y -f
11. apacheとmuninのインストール
pi@raspberrypi:~ $ sudo apt-get install apache2 pi@raspberrypi:~ $ sudo apt-get install munin
※ muninインストール前にapacheが入ってないと、泣きを見ることになる。
12. LAN内の別のPCからウェブページを参照できるか確認
13. muninのアクセス設定
pi@raspberrypi:~ $ sudo vi /etc/munin/apache.conf
(書き換え前) <Directory /var/cache/munin/www> Order allow,deny Allow from localhost 127.0.0.0/8 ::1 Options None (書き換え後) <Directory /var/cache/munin/www> Order allow,deny #Allow from localhost 127.0.0.0/8 ::1 Allow from all Require all granted Options None
14. muninの設定をapache配下にシンボリックリンクする。
pi@raspberrypi:~ $ sudo ln -s /etc/munin/apache.conf /etc/apache2/sites-enabled/munin.conf
15. 再起動
pi@raspberrypi:~ $ sudo reboot
16. LAN内の別のPCからmuninを参照できるか確認
以上。
ConoHa導入して、やったことログ
やったことまとめ。
これら方法が適切なのかは、わからない。
ググった情報、勘を頼りにしてるので、セキュリティ的な問題とか有るかもしれない。
もし変なところがあれば、指摘していただければ助かります。
なんかアンケートサイトに登録してみたんだけど
ページ切り替えができるんだけど、「戻る」ボタンが無くて元の回答に戻れないのが微妙かなあ。
でもシンプルで使いやすいかも。
回答にかかった時間とかも集計できて便利。
無回答で送信したらどうなるのか試そうと思ってやってみたら、回答回数制限かけてるせいでやり直せなくなってしまった・・・。
あ、よかったら回答してくれると喜びます。
続きを読む