質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

Q&A

解決済

1回答

2599閲覧

VBSでXMLのスクレイピングについて

退会済みユーザー

退会済みユーザー

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

XMLパーサ

XML文書のテキストデータだけを抜き出して、アプリケーションソフトが利用しやすい形式に変換させるソフトウェアをXMLパーサと呼びます。

0グッド

0クリップ

投稿2020/05/31 06:31

前提・実現したいこと

こちらのサイトを参考にVBSでYahoo!のルビ振りAPIを使用して漢字のふりがなを取得しようとしています。

発生している問題・エラーメッセージ

最初のふりがな<Furigana>やまだ</Furigana>は取得できるのですが、もう一つのふりがな<Furigana>たろう</Furigana>が取得できず以下のエラーになります。

オブジェクトがありません。

取得対象のXML

<?xml version="1.0" encoding="UTF-8"?> <ResultSet xmlns="urn:yahoo:jp:jlp:FuriganaService" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:yahoo:jp:jlp:FuriganaService https://jlp.yahooapis.jp/FuriganaService/V1/furigana.xsd"> <Result> <WordList> <Word> <Surface>山田</Surface> <Furigana>やまだ</Furigana> <Roman>yamada</Roman> </Word> <Word> <Surface> </Surface> </Word> <Word> <Surface>太郎</Surface> <Furigana>たろう</Furigana> <Roman>tarou</Roman> </Word> </WordList> </Result> </ResultSet>

該当のソースコード

Option Explicit Dim objIE Dim objLink Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEを開く objIE.navigate "https://jlp.yahooapis.jp/FuriganaService/V1/furigana?appid=APIキー&grade=1&sentence=%E5%B1%B1%E7%94%B0%E3%80%80%E5%A4%AA%E9%83%8E" 'ページが読み込まれるまで待つ Do While objIE.Busy = True Or objIE.readyState <> 4 WScript.Sleep 100 Loop Dim objTr,objTh,objTd Dim el '要素をコレクションとして取得して変数にセット Set objTr = objIE.document.getElementsByTagName("Word") For each el In objTr Set objTh = el.getElementsByTagName("Furigana") MsgBox objTh(0).innerText MsgBox objTh(1).innerText next

試したこと

objTh(1).innerText<Furigana>たろう</Furigana>が入っていないのでエラーになるのは分かるのですが、どのようにすれば両方のFuriganaを取得できるのでしょうか。
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Windows 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

色々試したはずなのにSet objTr = objIE.document.getElementsByTagName("Word")Set objTr = objIE.document.getElementsByTagName("WordList")に変えたら取れました。

投稿2020/05/31 06:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問