
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で質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript htmlとcssで分数を表示後、分数の右側に文書を書きたい 1 2022/04/28 10:09
- HTML・CSS 分数が正常に表示されない。 6 2022/05/09 18:53
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
含む含まないという概念自体の...
-
テンソル解析(絶対微分学)は...
-
入力するとボタンを押していな...
-
見た目と声さえ良ければ、他の...
-
角丸画像の背景色を透明にした...
-
borderプロパティによる線の表...
-
ホームページビルダー19SPで...
-
【ヒトの神秘】美男美女から何...
-
HEADとドキュメントタイプ...
-
レイヤーの固定の方法
-
既婚男女の方、結婚前と結婚後...
-
期待すると信頼するの違いはな...
-
HTML の繰返し法???
-
ある要素の中身を全部グレーア...
-
tdに対してmin-heightの定義、...
-
listでもっぱら通常iteratorを
-
親要素・子要素
-
マージソートの計算量について-...
-
<div align="center">を使わず...
-
smallにtext-allignが効かない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既婚男女の方、結婚前と結婚後...
-
含む含まないという概念自体の...
-
テキストボックスの中にリンク...
-
質問1.
-
改行ほどは行かないけど、若干...
-
NからZへの全単射を具体的に構...
-
input type="hidden"で取得した...
-
smallにtext-allignが効かない
-
aの中にspan
-
HTML の繰返し法???
-
下線と文字の間を調整するには...
-
角丸画像の背景色を透明にした...
-
html タグの閉じスラッシュ前の...
-
CSS:overflow要素の印刷について
-
HTMLページ上でiframeを最前面...
-
CSSで改行後の行間調整
-
tdに対してmin-heightの定義、...
-
H1タグを画像にしたい
-
スタイルシートで文字色を指定...
-
textareaの幅を画面と合わせたい
おすすめ情報
ありがとうございます。
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
の箇所が黄色くなり、添付のメッセージが起動されます。