2013-12-02 4 views
0

Мне нужно, чтобы очистить название, описание продукта и код продукта и сохранить его в лист из < < < HERE >>> в этом случае те:нужна помощь соскоб с Excel VBA

  1. «Екатерина Lansfield Helena Мульти Покрывало - Двойной »
  2. « Это потрясающее покрывало из слоновой кости было специально спроектировано для того, чтобы сидеть с ассортиментом спальни Helena. Он имеет тонкий цветочный дизайн с ромбовидным стеганым покрытием. Постельное покрывало дополнено, поэтому его можно использовать как легкое одеяло в летом или в качестве дополнительного слоя зимой. Полиэстер. Размер L260, W240cm. Подходит для двуспальной кровати. Машинная стирка при 30 ° C. Подходит для сушки в барабан. EAN:. 5055184924746.
  3. Код товара 116/4196"

Я пробовал разные методы, и никто не был хорошим для меня в конце концов, для функций Мид и Instr не результат никто, это может быть, что мой код был неправильным. Извините, я не даю никакого кода, потому что я уже много раз перепутал его и не получил результата. Я попытался очистить страницу отверстия с помощью GetDatafromPage. Он работает хорошо, но для разных страниц продукта вывод идет в разные строки поскольку количество элементов изменяется со страницы на страницу, а также невозможно очистить только выбранные элементы. Поэтому бессмысленно получать значение из определенных ячеек.

ответ

3

Это видно мс не слишком сложно. Вы можете использовать Firefox, чтобы взглянуть на структуру страницы (щелкните правой кнопкой мыши где-нибудь и нажмите inspect element и идти оттуда ...)

Вот простой пример кода:

Sub test() 
    Dim ie As InternetExplorer 
    Dim x 

    Set ie = New InternetExplorer 
    ie.Visible = True 
    ie.Navigate "http://www.argos.co.uk/static/Product/partNumber/1164196.htm" 
    While ie.ReadyState <> READYSTATE_COMPLETE 
     DoEvents 
    Wend 

    Set x = ie.Document.getElementById("pdpProduct").getElementsByTagName("h1")(0) 
    MsgBox Trim(x.innerText) 

    Set x = ie.Document.getElementById("genericESpot_pdp_proddesc2colleft").getElementsByTagName("div")(0) 
    MsgBox x.innerText 

    Set x = ie.Document.getElementById("pdpProduct").getElementsByTagName("span")(0).getElementsByTagName("span")(2) 
    MsgBox x.innerText 

    ie.Quit 
End Sub 

(I иметь ссылку в Excel на Microsoft Internet Controls, я не знаю, если это по умолчанию, если нет, вам нужно сначала установить его для запуска этого кода).

4

Другой вариант вместо использования объекта InternetExplorer - это объект xmlhttp. Вот аналогичный пример для kekusemau, но вместо этого используйте объект xmlhttp, чтобы запросить страницу. Затем я загружаю responseText из объекта xmlhttp в файл html.

Sub test() 
    Dim xml As Object 
    Set xml = CreateObject("MSXML2.XMLHTTP") 
    xml.Open "Get", "http://www.argos.co.uk/static/Product/partNumber/1164196.htm", False 
    xml.send 

    Dim doc As Object 
    Set doc = CreateObject("htmlfile") 
    doc.body.innerhtml = xml.responsetext 

    Dim name 
    Set name = doc.getElementById("pdpProduct").getElementsByTagName("h1")(0) 
    MsgBox name.innerText 

    Dim desc 
    Set desc = doc.getElementById("genericESpot_pdp_proddesc2colleft").getElementsByTagName("div")(0) 
    MsgBox desc.innerText 

    Dim id 
    Set id = doc.getElementById("pdpProduct").getElementsByTagName("span")(0).getElementsByTagName("span")(2) 
    MsgBox id.innerText 
End Sub 
+1

+1 для XMLHTTP :) – Santosh

Смежные вопросы