Excel/VBA を使用して Web ページから情報を収集する
P粉555696738
2023-09-02 18:48:32
<p>Web ページからデータを収集しようとしています。4 ビットのデータが必要で、そのうち 2 ビットは取得できましたが、残りの 2 ビットはヒントを受けています。 </p>
<p>これは固定 URL ではありませんが、リダイレクト後に IE から取得されたものであるため、この例では次を使用します。
https://cpc.farnell.com/warton/microprint-p2010-15-32um-250g/Solder-paste-15-32um-250g-pot/dp/SD02808
</p>
<p>タイトルを獲得したいと思っています:</p>
<p><strong>Microprint P2010 洗浄不要、鉛フリーはんだペースト、15~32um、250g ジャー - MICROPRINT P2010 15~32UM、250G</strong></p>
<p>およびメーカー部品番号</p>
<p><strong>マイクロプリント P2010 15-32UM、250G</strong></p>
<p><strong>getElementbyID</strong> を使用して製品の概要/製品情報を取得していますが、うまく機能していますが、他のテキスト フィールドは機能していないようです (Xpath を調べたところ、オブジェクトでエラーが発生します) VBE が必要です)</p>
<p>次を使用して他の 2 つの要素を正常に実装しました。</p>
<pre class="brush:php;toolbar:false;">Sub Mani()
'変数を宣言する
オブジェクトとしての Dim objWeb
Dim objHTML をオブジェクトとして
オブジェクトとしての Dim objElement
Dim strData、文字列としての StrData1
set objWeb = CreateObject("internetexplorer.Application")
str = "https://cpc.farnell.com/"
objWeb.navigate str & Cells(1, 1).Value
objWeb.Busy = True の間
ウェン
FullURL = objWeb.LocationURL
Range("b2").Value = FullURL
objWeb.navigate FullURL
'IE.Visible = True
objWeb.Busy = True の間
ウェン
objHTML = objWeb.document を設定します。
strData = objHTML.getElementById("pdpSection_FAndB").innerText
ActiveSheet.Range("C3").Value = strData
strData = objHTML.getElementById("pdpSection_pdpProdDetails").innerText
strData = なしを設定します
ActiveSheet.Range("D3").Value = strData
objWeb.Quit
End Sub</pre>
<p>URL の再読み込みは、URL リダイレクトに関するナビゲーション用です。</p>
<p>https://cpc.farnell.com/SD02808</p>
<p>メイン URL にリダイレクト</p>
<p>https://cpc.farnell.com/warton/microprint-p2010-15-32um-250g/Solder-paste-15-32um-250g-pot/dp/SD02808</p>
<p>部品番号を A1 に入力し、Excel がそれを VB の変数として使用し、IE インスタンスから完全な URL を再読み込みしたいと考えています。
これは、<strong>Web からデータを取得</strong> を使用しようとしたことによるレガシーの問題ですが、ページ スクリプト エラーによりうまく機能しなかったため、IE のインスタンスが使用されました。 </p>
IE は廃止されたため、今後は使用しないでください。ただし、xhr (XML HTTP リクエスト) 経由で短縮 URL https://cpc.farnell.com/SD02808 を使用することもできます。次のコードは、ロードされた HTML コードから必要な情報を読み取る方法のみを示しています。すべての安全装置が欠落しています。
リーリーSet strData を使用するオブジェクト変数と同様に、データ型
Stringの変数を
Nothingに設定しようとしているため、上記のコードでオブジェクト エラーが発生します。 = なし
。