Importieren Sie Webdaten mit Excel VBA

Aug 30 2020

Ich möchte, dass beim Importieren einer Website-URL eines Produkts der Name, die Beschreibung, der Preis und die Bild-URL des Produkts in einer Tabelle angezeigt werden.

Folgendes habe ich: (nicht die echte Website)

Sub Trial() Dim ieObj As InternetExplorer Dim ht As HTMLDocument
    
    Website = "https://www.amazon.com/resistencia-Avalon-cartas-empaque-original/dp/B009SAAV0C?pf_rd_r=WWESR922Z214Y10K3PHH&pf_rd_p=4dd821c0-e689-433a-a035-5e03461484eb&pd_rd_r=305599f9-5f3f-41c6-9a13-8daefd8d998c&pd_rd_w=qWHso&pd_rd_wg=BNzqC&ref_=pd_gw_unk"
    
    Set ieObj = New InternetExplorer ieObj.Visible = True ieObj.navigate Website
    
    Do Until ieObj.readyState = READYSTATE_COMPLETE DoEvents Loop
    
    Set ht = ieObj.document
    
End Sub

Zusätzliche Informationen
Name des Produkts: Der Widerstand: Avalon Social Deduction Gam
id = "productTitle" class = "a-size-large product-title-word-break"

Produktbeschreibung: The Resistance: Avalon ist ein eigenständiges Spiel, für das The Resistance nicht erforderlich ist. Die Spiele sind kompatibel und können kombiniert werden.
Für 5 bis 10 Spieler.
Spielzeit 30 Minuten.
(Alle in der Klasse = "a-list-item", aber verschiedene Abschnitte.)

Preis: $ 17.12
id = "priceblock_ourprice"
class = "a-size-medium a-color-price priceBlockBuyingPriceString"

Bild URL: https://images-na.ssl-images-amazon.com/images/I/91JhcC33dTL._AC_SY879_.jpg
img alt = "Der Widerstand: Avalon Social Deduction Game"

Antworten

1 SIM Aug 30 2020 at 21:19

Sie können xhr anstelle von IE verwenden, um die oben genannten Felder abzurufen. Dies beschleunigt die Ausführung auf jeden Fall und spart Ihnen viel Zeit. Ich habe Regex nur verwendet, um den gewünschten Bildlink zu isolieren. Stellen Sie sicher, dass Sie Microsoft HTML Object Libraryvor der Ausführung zur Referenzbibliothek hinzufügen .

Sub GetContent()
    Const URL = "https://www.amazon.com/resistencia-Avalon-cartas-empaque-original/dp/B009SAAV0C?pf_rd_r=WWESR922Z214Y10K3PHH&pf_rd_p=4dd821c0-e689-433a-a035-5e03461484eb&pd_rd_r=305599f9-5f3f-41c6-9a13-8daefd8d998c&pd_rd_w=qWHso&pd_rd_wg=BNzqC&ref_=pd_gw_unk"
    Dim S$, sImage$, Matches As Object

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:79.0) Gecko/20100101 Firefox/79.0"
        .send
        S = .responseText
    End With
    
    With New HTMLDocument
        .body.innerHTML = S
        [A1] = .querySelector("h1#title > span#productTitle").innerText
        [B1] = Trim(Split(.querySelector("#feature-bullets > ul.a-unordered-list").innerText, "model number.")(1))
        [C1] = .querySelector("span[id='priceblock_ourprice']").innerText
        sImage = .querySelector("#imgTagWrapperId > img").getAttribute("data-a-dynamic-image")
    End With
    
    With CreateObject("VBScript.RegExp")
        .Global = True
        .IgnoreCase = False
        .Pattern = """(.*?)"""
        .MultiLine = True
        Set Matches = .Execute(sImage)
        [D1] = Matches(2).submatches(0)
    End With
End Sub