ieやエッジを使用すれば簡単なのですが、ブラウザを使用したくないので別の方法を考えています。
次のurlの様にクラスAAAAAの下にいくつかクラスがあり、そのクラスにinnerTextが2つあります。
やりたいことは、AAAAAで絞って、その配下のクラスのtextクラスのinnerHtmlのみを取得したいのですが、詳しい方教えてください。
まとめて取得して半角空白以前を抜き出せばよいという考えもありますが、今回はどうしてもクラスtextをスポットで抜き出したいのでよろしくお願いいたします。
<url>
<ul class="AAAAA">
<label>
<input type="checkbox">
<span>
<span class="flag"></span>
<span class="text" aria-hidden="true">21</span>
</span>
<span class="count">52</span>
</label>
</li>
<li class="facet">
<label>
<input type="checkbox">
<span>
<span class="flag"></span>
<span class="text" aria-hidden="true">21.5</span>
</span>
<span class="count">33</span>
</label>
</li>
以下:同じ
試験中モジュール
Set httpClient = CreateObject("WinHttp.WinHttpRequest.5.1")
httpClient.Open "GET", ページ, False
httpClient.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0"
httpClient.setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
httpClient.setRequestHeader "Upgrade-Insecure-Requests", 1
httpClient.send (Null)
'Dim htmDoc As MSHTML.HTMLDocument
'Set htmDoc = New MSHTML.HTMLDocument
'htmDoc.body.innerHTML = httpClient.responseText
'見本
Dim 要素 As MSHTML.HTMLDocument
Set 要素 = New MSHTML.HTMLDocument
要素.body.innerHTML = httpClient.responseText
Dim objClass As Object
For Each objClass In 要素.getElementsByClassName("AAAAA")
Debug.Print objClass.innerText
Next
Stop
実行結果
21 52
21.5 33
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
素朴な疑問なのですが、この簡易的な方法って、HTML解析待ちが要らないのでしょうか。
要素.body.innerHTML = httpClient.responseText
While 要素.readyState <> "complete"
Sleep 1
Wend
―――
一般的には、IPersistStreamInit::Load を用いる。
https://gist.github.com/kumatti1/485df5eaeaa43d3 …
No.2
- 回答日時:
No1です。
>No1の回答者さまの意見を実行しましたが、エラーになりました
getElementsByClassNameで取得できるのは要素リスト(配列に似たオブジェクト)のはずです。(一応、メソッド名が複数形になっていますし)
最初にご提示のコードではその様に扱っているので、今更、説明は不要と思ったのですが……
エラーメッセージの雰囲気では、要素(群)は取得できているような感じですが?
No.1
- 回答日時:
こんにちは
よくわかってませんけれど、objClassが取得できているのなら、再度
objClass.getElementsByClassName("text")
などで絞りこめばよいだけでは?
あるいは、querySelectorやquerySelectorAllが使えるのなら、ダイレクトに要素が取得できるものと思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
smallにtext-allignが効かない
-
【ヒトの神秘】美男美女から何...
-
input type="hidden"で取得した...
-
その要素がjQueryでremove()済...
-
html タグの閉じスラッシュ前の...
-
質問1.
-
現行の日本国憲法の古い所を教...
-
H1タグを画像にしたい
-
空要素タグ??
-
初歩的な質問です。<div>のwidt...
-
C言語 並び替え(配列)について
-
ドラッグ&ドロップ(D&D)を制限...
-
アコーディオンメニューの二階...
-
「諸要素」とはどういう意味で...
-
figcaption要素の中にul要素
-
期待すると信頼するの違いはな...
-
テキストボックスの中にリンク...
-
brタグ、pタグやtableタグが非...
-
HTML の繰返し法???
-
tdに対してmin-heightの定義、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【ヒトの神秘】美男美女から何...
-
含む含まないという概念自体の...
-
smallにtext-allignが効かない
-
質問1.
-
「諸要素」とはどういう意味で...
-
input type="hidden"で取得した...
-
角丸画像の背景色を透明にした...
-
改行ほどは行かないけど、若干...
-
CSS:overflow要素の印刷について
-
タグは大文字と小文字どちらが...
-
NからZへの全単射を具体的に構...
-
HTMLでTextareaを横に2つ並べ...
-
H1タグを画像にしたい
-
figcaption要素の中にul要素
-
imgタグをそのまま使うことは正...
-
textareaの幅を画面と合わせたい
-
ある要素の中身を全部グレーア...
-
テキストボックスの中にリンク...
-
スタイルシートで文字色を指定...
-
HTMLページ上でiframeを最前面...
おすすめ情報
ありがとうございます。
textのクラスは他にも使われており、objClass.getElementsByClassName("text")だけで取得すると
別のクラスのtextも採ってきてしまいます。
なので一度AAAAAクラスで絞って、その中のクラスtextを取得したいのです。
No1の回答者さまの意見を実行しましたが、エラーになりましたので補足でつけておきます。
objclassをDOM形式にまとめないといけいのでしょうか?
何かうまくDOMが理解できるものに変換する方法をしっている人はいませんか?
For Each objClass In 要素.getElementsByClassName("facets facet-SIZE_SCHEME_SHOESIZE")
Debug.Print objClass.getElementsByClassName("text").innerText
Debug.Print 要素1.innerText
Next
Debug.Print objClass.getElementsByClassName("text").innerText
の箇所が黄色くなり、添付のメッセージが起動されます。