ホーム>source

から通常の(126,37€)および割引(101,10€)の価格情報を取得しようとしていますこの ウェブサイト。

簡略化されたHTMLコードは次のようになります。

<前>ウィズウィズ

だから、私は基本的に一歩一歩行きます(divクラス-> ulクラス-> liクラス-> スパンクラス)、最後にinnerTextを取得します。

通常価格で買えますが、 <div class="vw-productFeatures "> <ul class="feature-list -price-container"> <li class="feature -price"> <span class="value">126,37</span> </li> </ul> <ul class="feature-list vw-productVoucher"> <li class="voucher-information">Mit Code <span class="voucher-reduced-price">101,10</span> </li> </ul> </div> 割引価格の返品は空です。

これは私が作業しているコードです:

<前>ウィズウィズ

私が得ている出力:

<前>ウィズウィズ

デバッガーは正しいスパンクラスを見つけることができることを示していますが、価格情報を持つ属性(innerTextを含む)がありません。

割引価格の情報を入手するにはどうすればよいですか?

spanclass.innerText
あなたの答え
  • 解決した方法 # 1

    ページのコンテンツの多くがAPI呼び出しに依存している場合、ブラウザの自動化を使用する方が簡単な場合があります。

    これはパフォーマンスの観点からは理想的ではありませんが、操作が速く、ピンチで機能します。もう1つの方法は、ユーザーとサーバー間のWebトラフィックを監視し、Webリクエストをエミュレートして割引価格を取得できるかどうかを確認することです。これはより高速ですが、これがどのように機能するかを理解するには少し時間がかかる場合があります。

    検討する各アプローチにはトレードオフがあります。以下に、私があなたが信じているデータを取得するために機能しているInternet Explorerオートメーションコードをいくつか示します。

    <前>ウィズウィズ

    結果は次のとおりです。

    ウィズウィズ

  • 解決した方法 # 2

    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub GetReducedPrice() Dim text As String With CreateObject("internetexplorer.application") .navigate "https://www.rakuten.de/produkt/msi-b450-tomahawk-max-atx-mainboard-4x-ddr4-max-64gb-1x-dvi-d-1x-hdmi-14-1x-usb-c-31-2843843890" Do While .Busy And .readyState <> 4: DoEvents: Loop Sleep 1000 ' wait a little bit too text = .document.querySelector(".voucher-reduced-price").innerText .Quit End With Debug.Print "the reduced price is: " & text End Sub はありません  値下げのクラス:

    <前>ウィズウィズ

    シンプルなセレクターを使用して the reduced price is: 101,10 で両方の価格を取得できます  (例)不必要な反復を伴う複雑なメソッドの代わり。

    <前>ウィズウィズ

    更新: Vaucherはhttps://tags.tiqcdn.com/utag/rakuten/main/prod/utag.jsであり、 -hide に基づいて計算されます  と日付。

    ulClass = "feature-list vw-productVoucher"

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ ios - AVAudioPlayerの出力をSwiftのスピーカーに変更しますか?