Windows11でも動作可能なUWSCは環境設定がPythonに比べて楽!
AccessやExcelVBAなどBASIC言語や昔、COBOLでプログラムを組んでいた人にとっては
Web上からデータを自動的に抜きさえすれば、後は既存の習得スキルでなんとかできる。
そう考えている人にとってはUWSCは今も最強のツールである。
2022.7.23【UWSC】で画面をクリックする3つの方法+1を記事化してみたよ💗
2020.5.9時点でWindows11環境で問題なく動作している【UWSC】
Windows11でもWin10に引き続きJRAホームページからの「データ収集」+加工が成功しているように、まだまだ使えるソフトであることは既に当ブログで証明済!
- Windowsでの環境構築が他よりも圧倒的に簡単
- パソコン①でインストールした【UWSC】フォルダー毎、パソコン②へコピー動作可能
- テキスト収集ならChromeも新Edgeも操作可能
- ファイルサイズが小さい(5M程度)
- 各パソコンからの起動となるため、Web上の基本操作でデータ取集するため
サーバーへの負荷は通常の操作とほぼ変わらない - ExcelVBAマクロとの文法上の相性がどちらもBasic言語なので大きく逸れることがなく「命令」が同一的に覚えやすいVBAの財産があるほど【UWSC】活用の方が簡単に目的を達成しやすい
- 既にサポートがないので、新しい技術には使えない!
Pythonを使った方が良いかな?と思うところ
- LinuxOSでも使える
- バックグラウンド処理がUWSCよりもやりやすい
- ビッグデータを使ったAI分析など次のステップへ移行しやすい
- 世界標準になる勢いの言語だけに、これからのプログラミング需要が期待できる
- プログラマーとしての価値は高くなる言語と考える
私がまだ【UWSC】に傾注している理由
- MicrosoftがChromium化したことで、再度使えるようになったこと
- ブラウザーの選択肢が1つから2つになった
- ①Chrome,②MS-Edge
- UWSC構文はBasic的で、ExcelVBA同様に自動記録機能がある
- VBAの知識があれば、その延長線で習得できる
- 既にあるExcelVBAとAccessVBAの個人資産を継続利用できる
- 一からシステムを組む必要がない
- 今のところスクレイピングで拾うのは「テキスト」のみ
- 個人的なシステム構築のゴールがAccess[.accdb]+SQL-Server(Express)
- Excelメイン+Googleスプレッドシート補足が機能している
- WindowsユーザーがLinuxOSやGoogle環境だけでシステム環境を整えるのは、スキルアップとカネが更に必要!
- Windows(スタンドアロン)+Google(Web)
- OneDrive+Googleドライブ
- Googleを補助的な使い方をする方が得策
- 今の知識のまま、段階的に運用しながらシステム構築が可能
- Excelが得意なところはExcelVBA(テキスト収集)
- テキストコピペだけ【UWSC】…今
- 【UWSC】が使えなくなった時、テキストコピペだけ他のツールを探せば良い!
- 最終ゴールは、システム構築ではなく「データ分析」の活用と「時間運用」
- 馬券を当てたい!
- ブログネタを集めたい!
- 一人で多重行動化し時間獲得!
例:自作競馬データベースのスクレイピング作業の移行手順
- 手動でWebをExcelシートにコピペ → 【UWSC】でスクレイピング
- Excelでデータ加工をし表形式に整列
- 手動で表データをMS-Accessを利用してSQL-Server(EXPRESS)に投入
- MS-Access操作はマクロでワンクリックで自動化
2~4というシステムを先に作っておき、1.手動・・・をUWSCで自動化したところまで完成している。これを更に完全自動で動かす!?。。。その必要はないな~と感じている。
※2022.5.9追記分~ここまで
以下は2020.1.13記事作成時のモノ
2019.12.28(土)第36回 ホープフルステークスGⅠを表示してみる
サンプルには、JRAレース結果を使用する。
出走表は、当週しか表示できないので今回のブログ説明のサンプルとしては、これからも閲覧可能な「レース結果」を使うことにする。
①手動で操作:2019.12.28 ホープフルステークス
JRAのホームページ>レース結果>過去レース結果検索>開催年選択「2019」>開催月選択「12」検索>中山 ホープフルステークスGⅠ
②Chrome+UWSCで表示:2019.12.28 ホープフルステークス
- CPU i7-6500U
- CPU i3-330m
※スペックが大きく違うCPUで両方ともに動作するのを確認した。
※ご利用の際はUWSCの緊急停止は少なくともできるようになってから利用すること。
デフォルトなら
『 ALT + F2 』で強制停止!
※プログラムの二次利用は自己責任で行うこと。
画面操作のCTRL+Fを利用する。
CLKITEMというUWSCの命令がある。IEでは動作するが、Chromeでは動かない。
そこで通常のキーボード操作と同じでChrome上でテキストを「CTRL+V」でコピペする方法で
アイテムをクリックする方法で目的のページに辿り着く方法を取っている。
Pythonのスクレイピングに比べてかなり遅い処理になり大量のページを素早く取り込むことはできないが、手動と同じ操作のため動きの制御は「キーボード操作」をそのまま自動化するだけなので簡単で処理が分かり易い。
//コンピュータ名を取得する
DIM WshShell = CREATEOLEOBJ("WScript.Shell")
comname= trim(WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%"))
//print "COMPUTERNAME:" + comname
//jraのホームページを立ち上げる
//TEST中はCloseしない
//CTRLWIN(GETID("chrome"),close)
exec("cmd /c start=http://www.jra.go.jp/sitemap/")
sleep(1)
ID=GETID("サイトマップ","chrome")
sleep(0.5)
CTRLWIN(ID,ACTIVATE)
sleep(0.5)
ret=STATUS(ID, ST_ACTIVE)
ifb !ret then
print "「サイトマップ」ではありません"
print ID
sleep(5)
exit
endif
//サイトマップから 文字列検索し「レース結果」をクリック
sleep(1)
SENDSTR(0, "レース結果") //クリップボードに文字を送る
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(0.5)
KBD(VK_ESC,CLICK)
sleep(0.5)
KBD(VK_RETURN,CLICK)
sleep(1)
ID=GETID("レース結果 開催選択","chrome")
sleep(0.5)
CTRLWIN(ID,ACTIVATE)
sleep(0.5)
ret=STATUS(ID, ST_ACTIVE)
ifb !ret then
print "「レース結果 開催選択」ではありません"
print ID
sleep(5)
exit
endif
//レース結果 開催選択から 文字列検索し「過去レース結果検索」をクリック
sleep(1)
SENDSTR(0, "過去レース結果検索") //クリップボードに文字を送る
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(0.5)
KBD(VK_ESC,CLICK)
sleep(0.5)
KBD(VK_RETURN,CLICK)
sleep(1)
ID=GETID("過去レース結果検索","chrome")
sleep(0.5)
CTRLWIN(ID,ACTIVATE)
sleep(0.5)
ret=STATUS(ID, ST_ACTIVE)
ifb !ret then
print "「過去レース結果検索」ではありません"
print ID
sleep(5)
exit
endif
sleep(1)
//過去レース結果検索から 文字列検索し「開催年月」を選択
sleep(1)
SENDSTR(0, "開催年月") //クリップボードに文字を送る
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(0.5)
KBD(VK_ESC,CLICK)
sleep(0.5)
KBD(VK_TAB,CLICK)
sleep(0.5)
KBD(VK_2,CLICK)
KBD(VK_0,CLICK)
KBD(VK_1,CLICK)
KBD(VK_9,CLICK)
KBD(VK_TAB,CLICK)
sleep(0.5)
KBD(VK_1,CLICK)
KBD(VK_2,CLICK)
KBD(VK_TAB,CLICK)
KBD(VK_RETURN,CLICK)
sleep(1)
ID=GETID("過去レース結果検索","chrome")
sleep(0.5)
CTRLWIN(ID,ACTIVATE)
sleep(0.5)
ret=STATUS(ID, ST_ACTIVE)
ifb !ret then
print "「過去レース結果検索」ではありません"
print ID
sleep(5)
exit
endif
//過去レース結果検索から 文字列検索し「ホープフルステークス」をクリック
sleep(1)
SENDSTR(0, "ホープフルステークス") //クリップボードに文字を送る
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_F,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_F,UP)
sleep(0.5)
KBD(VK_CTRL,DOWN)
KBD(VK_V,DOWN)
sleep(0.5)
KBD(VK_CTRL,UP)
KBD(VK_V,UP)
sleep(0.5)
KBD(VK_ESC,CLICK)
sleep(0.5)
KBD(VK_RETURN,CLICK)
sleep(1)
ID=GETID("レース結果","chrome")
sleep(0.5)
CTRLWIN(ID,ACTIVATE)
sleep(0.5)
ret=STATUS(ID, ST_ACTIVE)
ifb !ret then
print "「レース結果」ではありません"
print ID
sleep(5)
exit
endif
sleep(1)
Sleepの数や秒数は自分のパソコン環境に合わせて変化させることにより快適にすることができる。
上記コンピューター名の取得は今回のホームページ表示とは直接関係ないが、参考として載せている。
※プログラムの是非や内容についての質問にはお答え致しません。
Windowsマクロテクニック: 超速!!(UWSCの使い方)
- マクロの基礎知識
- 実践!サンプルマクロ集
- UWSCで使える関数や制御文
- 他のアプリケーションの高度な制御方法
- マクロをもっと使いこなそう
- あとがき
- 付録
- 索引
※UWSCの書籍として今も購入可能なモノは2種のみなので、その点を考慮すると★5になるが運よく中古があれば500円以下で購入可能!
Amazonレビューは★3.9
Windowsを自動化!UWSC逆引き本 Kindle版
- はじめに
- UWSCについて
- UWSCスクリプトをつくる
- 文字を操作する
- 配列を操作する
- ファイルを操作する
- ウィンドウを操作する
- システムを制御する
- ブラウザを操作する
- Officeスイートを操作する
- 高度な操作
※Kindle販売なので在庫がなくなることはない?
UWSCの読み物として暇なときに見るようにしている
Amazonレビューは★3.9
③Chrome+Pythonで表示:2019.12.28 ホープフルステークス
- CPU i3-330m (テスト用のノートパソコンで実行)
VSCodeからデバッグ後実行でインスタンス表示し10秒後にCloseする。
UWSCと同様の動きにしている。
私もPythonは勉強中なので、一行一行ググって調べてテストしての繰り返しをひたすら行っている。今回も継ぎ接ぎながら、なんとか目的のページまで到達することができた。
#selenium準備
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from time import sleep
#Chromeを起動
driver = webdriver.Chrome('C:\chromedriver_win32\chromedriver')
#指定したURL表示
driver.get("http://www.jra.go.jp/sitemap/")
#リンクテキスト名=対象リンク要素を取得
element = driver.find_element_by_link_text("レース結果")
#Controlキーを押しながら"レース結果"のリンクをクリック
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL)
actions.click(element)
actions.key_up(Keys.CONTROL)
actions.perform()
sleep(3)
element = driver.find_element_by_link_text("過去レース結果検索")
#Controlキーを押しながら"レース結果"のリンクをクリック
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL)
actions.click(element)
actions.key_up(Keys.CONTROL)
actions.perform()
sleep(3)
# 年のエレメントを取得する
element = driver.find_element_by_id('kaisaiY_list')
# 取得したエレメントをSelectタグに対応したエレメントに変化させる
select_element = Select(element)
# 選択したいvalueを指定する
select_element.select_by_value('2019')
# 月のエレメントを取得する
element = driver.find_element_by_id('kaisaiM_list')
select_element = Select(element)
select_element.select_by_value('12')
element = driver.find_element_by_link_text("検索")
#Controlキーを押しながら"レース結果"のリンクをクリック
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL)
actions.click(element)
actions.key_up(Keys.CONTROL)
actions.perform()
sleep(3)
element = driver.find_element_by_link_text("ホープフルステークス")
#Controlキーを押しながら"レース結果"のリンクをクリック
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL)
actions.click(element)
actions.key_up(Keys.CONTROL)
actions.perform()
sleep(3)
#10秒表示して閉じる
sleep(7)
#インスタンスウインドウを閉じる
driver.close()
※プログラムの是非や内容についての質問にはお答え致しません。
現場ですぐに使える! 最新Pythonプログラミング逆引き大全450の極意
現場ですぐに使える! 最新Pythonプログラミング逆引き大全450の極意
- Pythonの概要
- 基本プログラミング
- 文字列と日付の操作
- ファイルの操作と管理
- デバッグ
- Excelシートの操作
- Wordドキュメント
- インターネットアクセス
- 自然言語処理
- GUI
- NumPy、Pandas、scilit-learn
- Pythonでディープラーニング
- Matplotlibによるデータの視覚化
- GitとGitHub
- AnacondaのインストールとJupyter Notebook、Spyderの使い方
- 索引
※私が持っているのは「313の極意」
9.以降~多少内容に違いがあるようだ
Amazonレビューは★4
編集後記
UWSCの後継を考えるとWindows11環境下なら【PAD】になるのか?
- Power Automate Desktop
- Microsoftアカウントを登録すれば無料で試せる
2024年1月時点ではChatGPTの優位がダントツなため、今後しばらくは昔のWindows3.1が出たときのようなMicrosoft一強が続く可能性が強い。
ただGoogle BARDが追随したとしても、もし簡単に動くモジュールをGUIで構築できるとしたなら!ぽちぽち文字を入力していくプログラミングよりも、管理しやすく誰にでも同じものが作れエラーが格段に少なくなるといった利点を持っているPADがこれからのプログラミングを席巻していくのかもしれない。と考えたりもする。
それでは、またね~😎