使用 Excel\VBA 從網頁中抓取訊息
P粉555696738
2023-09-02 18:48:32
<p>我正在嘗試從網頁中抓取數據,我需要 4 位數據,其中 2 位我已經能夠檢索到,但另外 2 位暗示了我。 </p>
<p>這不是一個固定的 URL,但在重定向後已從 IE 檢索此 URL,因此對於本範例,我將使用:
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,它在Object 上出錯) VBE中需要)</p>
<p>我使用以下方法成功實現了另外 2 個元素:</p>
<pre class="brush:php;toolbar:false;">Sub Mani()
'Declare variables
Dim objWeb As Object
Dim objHTML As Object
Dim objElement As Object
Dim strData, StrData1 As String
Set objWeb = CreateObject("internetexplorer.Application")
str = "https://cpc.farnell.com/"
objWeb.navigate str & Cells(1, 1).Value
While objWeb.Busy = True
Wend
FullURL = objWeb.LocationURL
Range("b2").Value = FullURL
objWeb.navigate FullURL
'IE.Visible = True
While objWeb.Busy = True
Wend
Set objHTML = objWeb.document
strData = objHTML.getElementById("pdpSection_FAndB").innerText
ActiveSheet.Range("C3").Value = strData
strData = objHTML.getElementById("pdpSection_pdpProdDetails").innerText
Set strData = Nothing
ActiveSheet.Range("D3").Value = strData
objWeb.Quit
End Sub</pre>
<p>URL 重新載入是為了圍繞 URL 重定向進行導航,</p>
<p>https://cpc.farnell.com/SD02808</p>
<p>重定向到主網址</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 已死,不應再使用。但是,也可以使用縮短的網址https://cpc.farnell.com/SD02808 透過 xhr(XML HTTP 請求)。以下程式碼僅顯示如何從已載入的 HTML 程式碼中讀取所需資訊。所有保障措施均缺失。
上面顯示的程式碼中出現物件錯誤是因為您嘗試將資料類型
String
的變數設為Nothing
,就像使用Set 的物件變數一樣strData =無
。