Соскоб веб с VBA, извлечь номер кода цвета из bgcolor - PullRequest
0 голосов
/ 11 января 2019

Здравствуйте, я хотел бы посчитать, сколько bgcolor есть под тегом td и извлечь код цвета из атрибута "bgcolor"

<td bgcolor="#1ea8ec" style="color:#ffffff">2.</td>

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Есть лучший способ.

  1. Используйте xmlhttp, чтобы не открывать браузер
  2. Использование css-селекторов для более быстрого поиска
  3. Используйте селектор идентификатора для таблицы, а не имя класса, так как это оптимальный метод выбора
  4. Сокращение зацикливания путем создания nodeList с одним циклом
  5. Использование словаря для обеспечения сохранения только уникальных значений

VBA:

Option Explicit
Public Sub GetColourCodes()
    Dim html As HTMLDocument, dict As Object, i As Long, colourCodes As Object
    Set html = New HTMLDocument: Set dict = CreateObject("Scripting.Dictionary")
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "http://www.soccer-rating.com/France/", False
        .send
        html.body.innerHTML = StrConv(.responseBody, vbUnicode)
    End With
    Set colourCodes = html.querySelectorAll("#ltable td[bgcolor]")
    For i = 0 To colourCodes.Length - 1
        dict(colourCodes.item(i).bgColor) = vbNullString
    Next
    Stop '<=Delete me later
End Sub

Результаты:

enter image description here

0 голосов
/ 11 января 2019
Sub rating()
Set objIE = CreateObject("internetexplorer.application")

Dim itemEle As Object
objIE.Visible = True
objIE.navigate "http://www.soccer-rating.com/France/"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

Set itemEle = objIE.document.getElementsByclassname("ltable")(0)
i = 0
For Each tr In itemEle.getElementsBytagname("tr")
    color = 
    j = 2
    For Each td In tr.getElementsBytagname("td")
    'if bgcolor there is then
          Sheets("rating").Cells(i, j).interior.color  = 'here color code of bgcolor "#1ea8ec"
     'end if
     j = j + 1
    Next td
    i = i + 1

Next tr
End Sub

если он находит bgcolor, он принимает цвет кода и окрашивает ячейку

...