Help us understand the problem. What is going on with this article?

一太郎でInternet Explorerを動かすwebスクレイピング(QiitaのSuperPlayRite初記事かもしれない)

概要

 普通に記事を書くつもりが、タグでSuperPlayRiteが表示されず、キーワード検索で引っかからず、一太郎で検索しても、ファイル操作くらいしか出てこず、そもそもQiitaにSuperPlayRiteの記事が存在しないのでは?と思いながら書いております。私の検索が甘い可能性はおおいにあります。

SuperPlayRiteとは何か

 一太郎8以降に搭載されたマクロ言語です。最新の一太郎もこちらの言語で動きます。
 私が知る限り一太郎SuperPlayRiteの本はこれが最新で唯一のものです。勉強するならこちらをお求めください。
https://www.justsystems.com/jp/news/97f/news/j970519z.html
(1997年05月発売)
・・・お求めできない・・!
 今はプレミアがついて、オークション等で出品されるとまあ1万円は下らないですね。
 最高額4万円で取引されたのを見たこともあります。

 全国の図書館でまだ置いてあるところが少しあるので、図書館で取り寄せるのが一番よい方法だと思います。やりましょう、SuperPlayRite
https://iss.ndl.go.jp/books/R100000002-I000002645644-00
(国立国会図書館オンライン)

以下所蔵図書館

国立国会図書館 東京 本館書庫
東京都立多摩図書館
神奈川県立川崎図書館
福井県立図書館
静岡県立中央図書館
京都府立図書館
宮崎県立図書館

 ちなみに、一太郎7以前はずっとPlayRiteという言語でしたので、PlayRiteの本はそこそこ流通しています。SuperPlayRiteと互換性がないので(コンバート機能はありますが)間違えてPlayRiteの本を買わないよう注意してください。
 時代は'97からずっとSuperPlayRiteですよ!なんか時代的にスーパーサイヤ人の影響を受けたネーミングではないだろうか。

なぜ一太郎を使うのか

 僕は、ワードよりもインデント処理が分かりやすく、変にずれたりしないところが好きで一太郎を使っています。
 ほかにも、
 ・袋文字が簡単に作れ、チラシ用途もいける
 ・とにかく日本語に特化した仕様
 ・日本全県の地図画像データが入っているなど日本人向け
 
 使ってみるといいとことはたくさんあります。まあ会社が買っているからという強い動機がありますが、使うのを止めたからといって働き方改革にはならないことを断言します。
https://www.sankei.com/premium/news/180212/prm1802120001-n1.html
https://www.j-cast.com/2018/01/18319038.html?p=all
(文書作成、ワードに統一 農水省、効率化で働き方改革)
 このとき、農水省に出し抜かれた気持ちが全くなかったといえば嘘になりますが、一太郎でWEBスクレイピングまでできるんだぞ、と農水省に知ってもらいたい気持ちも多少あります。
 当然Wordでもできますしネットや本に情報も多くてやりやすいですけどね!

コード

%は変数、\は改行、!!はコメントアウトです。
IDやパスワードなどの問題も生じませんし、ページ遷移の問題もない簡単な方法として、開かれているウインドウをShell.Applicationで取得する方法を採っています。

SuperPlayRite
declare variable %ie as object, \\
                %shellApp as object, \\
                %win as object, \\
                %htmldoc as object
set %shellApp = CreateObject("Shell.Application")
    foreach %win in %shellApp.windows
        If %win.Name = "Internet Explorer"  And Exact(%win.LocationName, "○○")  Then!!○○に一致するLocationNameのウインドウを見つけたらループ抜ける
            set %ie=%win
            exit foreach
       end if
    next
    Message(%ie.LocationName)!!LocationNameをメッセージ表示 
    Set %htmldoc = %ie.Document
    Message(%htmldoc.getElementsByName("text")(0).value)!!textの入力文字をメッセージ表示
    %htmldoc.getElementsByName("text")(0).value="テスト"!!textにテストと入力

 ほとんどExcelVBAと同じ方法でスクレイピングできることがお分かりいただけると思います。

 ウインドウの選別の見通しを立てたいときはPowerShellで

powershell5.1
$shell=new-object -comobject shell.application
$ieWindows=$shell.windows()|where{$_.name -match "Internet Explorer"}
$ieWindows

2020-05-19.png

こんな感じで全部のウインドウが表示されるので、LocationNameなどで特定するとよいと思います。
 Windowを特定した後は、getElementsByNameなど要素を特定してデータを取得したりデータを飛ばしたりするため、特定ページのHTMLを確認する必要があります。
HTML表示はF12でもよいですが、PowerShellでもできます。特にF12ですべて表示されないときはPowerShellが便利。

全ウインドウのHTMLを全表示する場合(大量になりがちなので不要なウインドウは閉じて)

powershell5.1
$shell=new-object -comobject shell.application
$ieWindows=$shell.windows()|where{$_.name -match "Internet Explorer"}
$ieWindows.document.body|select-object *

LocationNameに〇〇を含むウインドウのHTMLを全表示する場合(おすすめ)

powershell5.1
$shell=new-object -comobject shell.application
$ieWindows=$shell.windows()|where{$_.name -match "Internet Explorer"}
$ie=$ieWindows|where{$_.LocationName -contains "○○"}
$ie.document.body|select-object *

こんな感じで打てばHTMLの取得もできて便利です。

 じゃあ全部PowerShellでやればいいじゃんとも言われそうですが、オブジェクト渡しの関係でPowerShellはちょっと低速です。アプリを開いたりすると起動時間までプラスされてしまうので、最終的に一太郎でデータを使ったり、データを一太郎から飛ばすのであれば、SuperPlayRiteでやった方が高速です。もちろん、CSVやテキストファイルで完結するならPowerShellがおすすめです。

僕がSuperPlayRiteに求めるもの

 Openなどで開いたときに付す文書番号でファイルを特定する仕様を変更して、ファイル名でファイルを特定できるようにしてほしいです。文書番号を特定しないで使えるコマンドが少なすぎます。ActiveDocumentやActiveWindowのような特定方法がおそらくないので、開いているファイルでできるコマンドがとても少ないです。結局、VBSやExcelVBAで動かすことにしたこともあります。そのあたりに詳しい方がいれば、どうか御教授ください。
 そして一緒にSuperPlayRiteの記事を増やしませんか。
 だって、JustSystemの、日本のプログラミング言語ですよ。

harryyuni
PowerShell VBScript VBA SuperPlayRiteを使っています。 ダウンロード禁止、自作exe禁止の環境で動かせるものを作っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした