2016-07-13 13 views
0

Hier ist mein Code. Es zieht die "Artikelmodellnummer" von den Amazon-Detailseiten ab. Dies wurde geschrieben, um "Artikelmodellnummer" in den Aufzählungspunkten der Detailseite zu finden und die daneben liegende Nummer zu extrahieren.Wie kann ich den Web-Scraping-Code so ändern, dass Produkt-Bullets durchlaufen werden, bis die richtigen Bullet- und Pull-Informationen gefunden werden?

Das Problem ist, dass es manchmal nicht möglich ist, die "Modellnummer des Artikels" von einer Seite zu ziehen, die eindeutig eine Artikelmodellnummer hat. Hier

ist der Code

Sub Get_ITEM_CODE(ie As Object) 
    Dim WB As Workbook 
    Dim WS As Worksheet 
    Dim y As String 
    Dim AmUrl As String 
    AmUrl = ActiveCell.Value 
    ''Set WB = Workbooks.Add 

    Set WS = Sheets("Extract Item COde") 
    ie.Navigate AmUrl 
    Application.Wait (Now + TimeValue("00:00:02")) 
    Do While ie.readyState <> 4: Loop 
    On Error Resume Next 

    y = ie.document.getElementById("productDetails_detailBullets_sections1").innerText 

    WS.Range("A1").Value = y 

    SplitTextItemCode 
    AddtoListItemCode 

End Sub 

Hier ist eine Reihe von HTML, wo der Code macht seinen Job richtig:

<div id="detailBullets" class="feature" data-feature-name="detailBullets"> 

<div id="detailBulletsWrapper_feature_div" data-feature-name="detailBullets" data-template-name="detailBullets" class="a-section a-spacing-none feature"> 
    <div id="detailBullets_feature_div"> 

URL to webpage

Hier ist eine Reihe von HTML, wo der Code hat seine Arbeit nicht gemacht:

<div id="detailBullets" class="feature" data-feature-name="detailBullets"> 

<div id="detailBulletsWrapper_feature_div" data-feature-name="detailBullets" data-template-name="detailBullets" class="a-section a-spacing-none feature"> 
    <div id="detailBullets_feature_div"> 

URL to Web Page

Antwort

0

Probieren Sie es aus, es wird jedes "li" -Element unter dieser Element-ID durchlaufen. Dann ersetzt/löscht es den "Artikelmodellnummer:" - Text, so dass Sie für jedes Produkt, das Sie ansehen, eine saubere Modellnummer haben.

Dim Cnt As Variant 
Dim oCell As Object 
Cnt = 0 
With ie.Document.body.all.Item("detailBulletsWrapper_feature_div").all 
    For Each oCell In .tags("li") 
     If InStr(oCell.innerText, "Item model number:") > 0 Then 
      ModelNum = oCell.innerText 
      ModelNum = VBA.Replace(ModelNum, "Item model number: ", "") 
      Debug.Print ModelNum 
     Exit For 
     End If 
    Cnt = Cnt + 1 
Next oCell 
End With 
Set oCell = Nothing 
    End Sub 
+0

Excel braucht "Cnt" und "Ocell" als Variablen definiert werden, sonst wird der Code nicht korrekt ausgeführt wird. –

+0

Korrekt, Die cnt muss als Variable definiert werden. Die Ocell muss als ein Objekt definiert werden ... – BigElittles