разобрать после div с vba

0

Я хотел бы извлечь информацию с веб-страницы. У меня есть следующий пример.

    <div class="class1"> 
      <div class="class2">Address</div>
         address1<br>
         address2<br>    
         Zipcode, City, Country    <br>
      <div class="class2">phone</div>
         +1 352 555 555     <br>
  <div class="class2">Mobile</div >
      0563 555 31 56         
      <div  class="class2">Email</div>
         [email protected]<br>
     </div>

Я хотел бы получить следующее:

  • Адрес 1
  • Адрес 2
  • ZipCode, Город, Страна
  • +1 352 555 555
  • 0563 555 31 56
  • [email protected]

У меня есть следующий код:

    Sub GetData()
    Dim oHtml       As HTMLDocument
    Dim oElement    As Object
    Dim i           As Integer
    Set oHtml = New HTMLDocument

    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
       .Open "GET", "http://www.example.com", False
       .send
       oHtml.body.innerHTML = .responseText
   End With

   i = 1
   For Each oElement In oHtml.getElementsByClassName("class1")
       Debug.Print i, oElement.outerText    
       i = i + 1

   Next oElement
   End Sub

Любая помощь ценится!

Спасибо, Тина

  • 0
    Что именно не работает?
  • 0
    Привет Тина, вам может показаться, что такая работа очень обременительна с VBA. Возможно, используйте этот проект в качестве предлога для изучения лучшего языка манипулирования текстом, такого как Python или PHP.
Теги:

1 ответ

0

Быстро и грязно, но работает:

Sub GetData()
    Dim oHtml       As HTMLDocument
    Dim resultText As String
    Set oHtml = New HTMLDocument

    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", "http://www.example.com", False
        .send
        oHtml.body.innerHTML = .responseText
    End With

    'get inner text of div
    resultText = oHtml.getElementsByClassName("class1")(0).innerText
    'delete headers
    resultText = Replace(resultText, "Address", "")
    resultText = Replace(resultText, "phone", "")
    resultText = Replace(resultText, "Mobile", "")
    resultText = Replace(resultText, "Email", "")
    'delete linebreaks
    resultText = Replace(resultText, vbCrLf & vbCrLf, vbCrLf)
    resultText = Replace(resultText, vbCrLf & vbCrLf, vbCrLf)

    Debug.Print resultText
End Sub

Ещё вопросы

Сообщество Overcoder
Наверх
Меню