2017-07-28 18 views
0

以下のスクリプトを使用して、HTMLテーブルの値をlink1link2のリンクから正常にワークブックに戻しています。しかし、私が次のlink3のために同じスクリプトを使用しようとしているとき、何も返されません。私はそれがウェブサイト上に存在する複雑なHTMLテーブル構造によると思う。私はコードが.Item(0)の数はテーブルの複雑さのために調整する必要がありますが、アドバイスをお願いします。VBAを使用したHTMLテーブルのスクラブ

Sub Web_Data() 
    Dim http As New XMLHTTP60, html As New HTMLDocument 
    Dim topic As HTMLHtmlElement 

    With http 
     .Open "GET", "http://www.dolphinfitness.co.uk/en/optimum-nutrition/", False 
     .send 
     html.body.innerHTML = .responseText 
    End With 

    For Each topic In html.getElementsByClassName("category-products") 
     With topic.getElementsByClassName("product-name") 
      If .Length Then x = x + 1: Cells(x, 1) = .Item(0).innerText 
     End With 
     With topic.getElementsByClassName("price") 
      If .Length Then Cells(x, 2) = .Item(0).innerText 
     End With 
    Next topic 
End Sub 
+0

スクリプトを作成してください。セレンをダウンロードしてください。 – Martin

+0

このバージョンをインストールするためにはどのバージョンをインストールする必要がありますか? [セレンダウンロードページ](http://www.seleniumhq.org/download/) – Martin

+0

Btw、私はあなたのスクリプトのリンクを見て私のコメントを取り出した。これはあなたが掻きする必要があるリンクですか? – SIM

答えて

1

あなたの投稿に記載されているサイトは、さまざまな商品の価格を解析する際に少し難しいです。いくつかの製品は元の価格を持っており、残りの製品は特別な価格を持っています。式を使ってテクニックを適用するまで、それらを一度にすべて解析することはできません。私はそれらを扱うことができるxpathを書いており、あなたはそれらをすべて得ることができるでしょう。スクリプトは次のとおりです。

スクリプトの実行に問題がある場合は教えてください。 Btw、vbaでのセレンのバインディングには、「エラーが発生したときに次回に再開する」というような性質がありません。ループの前に配置してください。ありがとう。

+0

さて、私はそれがどのように行われたのか考えてきました。しかし、私は、上記のVBAを実行しようとすると、次のようなエラーを表示しようとしています:**新しいChromeDriver **のドライバとエラー自体:**ユーザ定義の型は定義されていません**。 – Martin

+0

これを見るには2つのことが私の心の中に来る。 1.あなたはchromedriverをインストールしましたか? 2.実行前にリファレンスライブラリに "selenium type library"を追加しましたか? Btw、あなたが現在のセレニウムを使用する方法を知っている場合、あなたがjavascriptが注入されたサイトの多くに直面する非常に快適なWeb​​スクレイピングされます。 – SIM

+0

申し訳ありませんが、これであなたをあまりにも悩ましていますが、これは全く新しいものです。次のエラーが表示されます:[imgur](http://imgur.com/a/DHCvS)[このリンクの]指示に従ってChromeDriversをインストールしたので、ライブラリ参照にセレンを追加しました(https:// www.youtube.com/watch?v=dz59GsdvUF8) – Martin

関連する問題