2

我目前正在使用 VBA 在 Excel 中构建一个爬虫,以便在几个在线参考资料的帮助下从公共网站上爬取表格数据。

但是,我需要一个额外的步骤来识别我抓取的字体中使用的字体颜色。

例如:如果一些单词是红色的,而其余的是黑色的,我将能够识别它们。如何检测字体颜色?

以下是我的代码的一部分。

For Each tbl In doc.getElementsByTagName("TABLE")
            tabno = tabno + 1
            If tabno = 5 Then
            nextrow = nextrow + 1
            Set rng = ws.Range("B" & nextrow)
            rng.Offset(, -1) = "Table " & tabno
            For Each rw In tbl.Rows
                If count = 1 Then
                For Each cl In rw.Cells
                    rng.Value = cl.outerText
                    Set rng = rng.Offset(, 1)
                    i = i + 1
                Next cl
                nextrow = nextrow + 1
                Set rng = rng.Offset(1, -i)
                i = 0
                End If
                count = count + 1
            Next rw
            End If
        Next tbl
4

2 回答 2

0

假设 font 元素始终是您关心的单元格中的第一个也是唯一一个元素;

Dim clr As String

For Each tbl In doc.getElementsByTagName("TABLE")
    For Each rw In tbl.Rows
        For Each cl In rw.Cells
           ActiveCell.Offset(1, 0).Select
           ActiveCell.Value = cl.outerText

            If Not IsNull(cl.FirstChild.GetAttribute("color")) Then
               ActiveCell.Font.Color = toRgb(cl.FirstChild.GetAttribute("color"))
            End If
        Next
    Next
Next

...

Function toRgb(hx As String) As Long
    Dim r As Long, g As Long, b As Long
    r = Val("&H" & Mid$(hx, 2, 2))
    g = Val("&H" & Mid$(hx, 4, 2))
    b = Val("&H" & Mid$(hx, 6, 2))
    toRgb = RGB(r, g, b)
End Function
于 2013-05-24T10:10:28.123 回答
0

感谢你们中的一些人的兴趣和帮助。非常感激。

我已经通过从 HTML 页面抓取“源代码”并将表中的值子串化为我想要区分的内容来解决问题。

以下是我所做的解决方法:

rng.Value = cl.outerText
temp = cl.outerHTML
If InStr(temp, "color=") <> 0 Then
rng.Value = rng.Value + " *this value has a different font color from the rest"
End If

问候。

于 2013-05-27T03:42:57.277 回答