Захват данных с веб-страницы excel vba с несколькими внутренними текстами

Я пытаюсь получить некоторые данные с веб-страницы и частично добился успеха. Однако мои знания html и javascript не на высоте. Я могу взять данные и заполнить свой лист, но я хочу, если возможно, разделить данные больше.

Вот мой код:

Sub get_data_2()
'Source for this code is:
'http://stackoverflow.com/questions/26613043/get-data-out-of-a-webpage-with-vba

Dim sht As Worksheet
Dim SKU As String
Dim RowCount As Long

Set sht = Sheet8
Set ie = CreateObject("InternetExplorer.application")

RowCount = 1
'This just gives the columns a titel i row numer 1.
sht.Range("a" & RowCount) = "SKU" 
sht.Range("b" & RowCount) = "Own titel"
sht.Range("c" & RowCount) = "EMO titel"
sht.Range("d" & RowCount) = "Product info"
sht.Range("e" & RowCount) = "Weight"
sht.Range("f" & RowCount) = "Volum"
sht.Range("g" & RowCount) = "EAN"
sht.Range("h" & RowCount) = "Originalnumber"
sht.Range("i" & RowCount) = "Price"
sht.Range("j" & RowCount) = "Stock"
sht.Range("k" & RowCount) = "Units"

Do

    RowCount = RowCount + 1
    SKU = sht.Range("a" & RowCount).Value ' **SKU is 491215 in this example**
    With ie
        .Visible = False
        .navigate "https://www.emo.no/web/ePortal/ctrl?action=showiteminfo&itemNo=" & SKU

        Do While .Busy Or _
            .readyState <> 4
            DoEvents
        Loop

    sht.Range("c" & RowCount).Value = .document.getElementById("itemDetail_heading").innerText
    sht.Range("d" & RowCount).Value = .document.getElementById("itemDetail_textBox").innerText
    sht.Range("e" & RowCount).Value = .document.getElementById("itemDetail_technicalDataBox").innerText

    sht.Range("j" & RowCount).Value = .document.getElementById("itemDetail_deliveryBox").innerText
    sht.Range("k" & RowCount).Value = .document.getElementById("itemDetail_unitsbox").innerText

    End With
Loop While sht.Range("a" & RowCount + 1).Value <> ""
Set ie = Nothing

End Sub

Теперь на веб-странице исходный код html (отрывок) выглядит следующим образом:

<div id="itemDetail_container">
<div id="itemDetail_heading">
<div class="xxLarge extraBold">Papir ubleket kraft 60g 40cm 5kg/rull</div>
<div class="item_itemNumberBox">
<span class="darkGray medium">Varenr : 491215</span>
</div>
</div>

Я хочу, чтобы в моем листе Excel отображался только текст «Papir ubleket kraft 60g 40cm 5kg / rull», но я также получаю «Varenr: 491215». То же самое и с другими колонками. Я попытался опубликовать изображение thge excel grab, но мне это не разрешили. Вы можете запустить код и посмотреть, или я могу отправить вам снимок экрана по электронной почте.

Что я могу сделать, чтобы данные были помещены в разные столбцы?

Большое спасибо за вашу помощь! :-)


person Hermann    schedule 06.07.2015    source источник


Ответы (1)


Для "Papir ubleket kraft 60g 40cm 5kg / rull" измените это

.document.getElementById("itemDetail_heading").innerText

to:

.document.getElementById("itemDetail_heading").getElementsByTagName("div")(0).innerText

или (менее конкретно):

.document.getElementById("itemDetail_heading").firstChild.innerText

Чтобы получить "Варенр: 491215" -

.document.getElementById("itemDetail_heading").getElementsByTagName("span")(0).innerText
person Tim Williams    schedule 06.07.2015