
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSで改行後の行間調整
-
既婚男女の方、結婚前と結婚後...
-
HTML の繰返し法???
-
含む含まないという概念自体の...
-
配列の要素をまとめて比較したい
-
<br /><hr />どっちを使ったら...
-
<div>の中の<div>の意味
-
物事の道理がわかりません。。
-
liタグの中に<p>タグやら<dl>を...
-
【Html CSS】<a>の上に文字を配...
-
HTML属性での「""」 「''」違い
-
投稿フォームの整列
-
htmlの文字が縦書きになる
-
1時間30分を簡単に表したいで...
-
CSSを使って定型文を挿入できま...
-
訪問済のリンク色を変えない方法
-
CSSで画像を同じ位置に重なり合...
-
pythonでのカーソル移動がずれる
-
ドロップダウンメニューが隠れ...
-
floatタグの使い方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テンソル解析(絶対微分学)は...
-
含む含まないという概念自体の...
-
見た目と声さえ良ければ、他の...
-
既婚男女の方、結婚前と結婚後...
-
smallにtext-allignが効かない
-
1から100までの自然数のうち、2...
-
改行ほどは行かないけど、若干...
-
NからZへの全単射を具体的に構...
-
aの中にspan
-
input type="hidden"で取得した...
-
マージソートの計算量について-...
-
角丸画像の背景色を透明にした...
-
HTML の繰返し法???
-
【ヒトの神秘】美男美女から何...
-
textareaの幅を画面と合わせたい
-
CSSで改行後の行間調整
-
HTMLページ上でiframeを最前面...
-
質問1.
-
html タグの閉じスラッシュ前の...
-
tdに対してmin-heightの定義、...
おすすめ情報
ありがとうございます。
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
の箇所が黄色くなり、添付のメッセージが起動されます。