Excel VBAを使用してJ-PlatPatから公報テキストをダウンロードする方法(6)

12.「図面」を入手

ここまでで、目的の公報の文献表示画面から、書誌、要約、請求の範囲、詳細な説明を全て「開いた」状態にした後に、その内容をテキストファイルにダウンロードすることができたと思う。ここではさらに、図面もダウンロードしてみようと思う。

このためには、「請求の範囲」や「詳細な説明」を開くのと同様の処理で、「図面」の「開く +」をクリックしてやり、折り畳まれている図面セクションを開いた後に、objIE2.document.body.innerHTMLをファイルに書き込むなり、変数に取り込むなりの操作を行う。しかし、このままでは図を表示させることはできない。

この部分のソースコードを「要素の検査」にて見てみると、下に示すように、複数の図が、<img id=”〇〇” style=”△△” alt=”◇◇” src=”xx.jpg”> といった形式で記載されている。


このうちの src=”xx.jpg” の xxの部分が図面へのリンクを示すURLの一部となっており、xxの前に “https://www.j-platpat.inpit.go.jp/” を付け加えれば、この図が表示されるリンク先URLが得られるようである。そこで、図面のリンクURLが記載されている部分を書き換えてやればよいことになる。具体的には、このページのソースの中から”【図1】”以降の部分を取り出し、次に示すような処理を行うことで、その中の、src=”xx.jpg” の”xx”の部分を、”https://www.j-platpat.inpit.go.jp/xx.jpg” に文字列置換してやればよい。

Dim temp As String
Dim k As Integer

k = InStr(objIE2.document.body.innerHTML, “【図1】”)
temp = Mid(objIE2.document.body.innerHTML, k)

temp = Replace(temp, “src=” & Chr$(&H22) & “/gazette”, “src=” & Chr$(&H22) & “https://www.j-platpat.inpit.go.jp/gazette”)

13.「経過情報」を入手

ここからは、少しややこしい処理になるが、経過情報および審査記録などの各種書類の入手処理について示す。この処理は、いろいろな公報の経過情報ページを開き、そのソースを眺め、試行錯誤を繰り返しながら、どうにか思ったような結果が得られる処理手順を見つけたもので、あまりきれいな処理とは言えない。この処理を行うやり方は他にも色々とあるだろうと思うし、もっとずっとエレガントな処理方法があるのではないかと思うので、ここにあげたやり方を参考に、各自でより良い方法を考えて欲しい。

まずは、下図に示すように、「書誌」「要約」「請求の範囲」「詳細な説明」および「図面」を入手した「文献表示」ページにおいて、⑧で示した「経過情報」のボタンを探し、これをクリックすることで、「経過情報表示」ページを開く(このページは新たなウィンドウ(タブ)で開く)。この処理は、固定URLを表示させるために行った「URL」ボタンのクリック処理と同様である。


For Each objtag In objIE2.document.getElementsByTagName(“a”)
      If InStr(objtag.outerHTML, “経過情報”) > 0 Then
            objtag.Click
            Exit For
      End If
Next

Set objtag = Nothing

上の操作によって表示される下図に示す「経過情報表示」ページは新たなウィンドウがタブで開き、「経過記録」のページが表示されているので、これをオブジェクト objIE3 に取り込んでやる。


Dim objIE3 As InternetExplorer
Dim shl As Object
Dim win As Object
Dim targetTitle As String

flag = 0
i = 1
targetTitle = “経過情報表示”

Do While flag = 0 And i < 300
      For Each win In shl.Windows
            DoEvents
            If win.Name = “Internet Explorer” Then
                  If InStr(win.document.title, targetTitle) > 0 Then
                        Set objIE3 = win
                        flag = 1
                        Exit For
                  End If
            End If
      Next
      Application.Wait [Now()] + 100 / 86400000
      i = i + 1
Loop

これにより「経過記録」のページが objIE3 に取り込まれたので、objIE3.document.body.innerHTML をファイルに書き込むなり、変数に取り込むなりすれば、その後、このページ内容に対してさらなる操作が可能となる。(実際には、次の処理を行う前に、ここでページの読み込みが完了したことを確認する処理が必要となるが、省略する。例えば「明細書」という文言が表示されるのを待つ等。)

次に、このページにて、「拒絶理由通知書」や「意見書」などの各書類の内容を取得しようとすると、ここまでとは少し異なる結構処理が必要となる。これについては、長くなりそうなので、新たな記事を立てて説明することにしたい。

一方で、このページには「経過記録」の他に、⑨で示すように「出願情報」、「登録情報」、「審判情報」および「分割出願情報」のページが開くリンクが表示されている。(経過記録と出願情報は全ての公報について表示されるが、その他のページは該当情報が存在している公報でのみ表示される。)ここでは、これらをクリックして「出願情報」や「登録情報」などのページを表示させる方法について示す。

例えば「出願情報」を開くには、「出願情報」というリンク⑨をクリックすればよいのだが、このページの関連部分のソースを見てみると、

<div class=”type_tab ng-star-inserted” _ngcontent-wdl-c420=””>
      <span _ngcontent-wdl-c420=””>出願情報</span>
</div>

となっており、このリンクは通常のAタグではなく、SPANタグとなっている。とはいえ、Aタグの処理の時と同様にSPANタグをクリックすることで、無事に所望のページが開くので、例えば「出願情報」をクリックする操作は、次のようになる。

For Each objtag In objIE3.document.getElementsByTagName(“span”)
      If InStr(objtag.outerHTML, “出願情報”) > 0 Then
            objtag.Click
            Exit For
      End If
Next

Set objtag = Nothing

Do While objIE3.readyState <> 4 Or objIE.Busy
      DoEvents
Loop

この操作により表示される「出願情報」のページは、今まで「経過記録」が表示されていたページを書き換える形で開くので、オブジェクト objIE3 に取り込まれる。従って、特段の操作は必要なく、objIE3.document.body.innerHTMLを読み込むことで必要な情報が入手できる。

さらに、これと同様の処理によって、「登録情報」「審判情報」「分割出願情報」の各ページを開き、内容を読み込むことができる。(「出願情報」「登録情報」「審判情報」は、基本的に文字のみがhtmlのTable形式で表示されているページなので、単純にテキストとして処理できるが、「分割出願情報」は、各出願の間の関係が図示されており、そのまま内容をコピーして表示させると、公報番号などが黒塗りされたりしてうまく表示できないので、うまく表示させるためには工夫が必要なようだ。)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です