Internet explorer 在Internet Explorer中检测字体颜色
我目前正在用VBA在Excel中构建一个爬虫程序,在几个在线参考资料的帮助下,从一个公共网站抓取表数据 然而,我需要一个额外的步骤,我需要识别我爬行的字体中使用的字体的颜色 例如:如果其中一些单词是红色的,而其余的是黑色的,我将能够识别它们。如何检测字体颜色 下面是我代码的一部分Internet explorer 在Internet Explorer中检测字体颜色,internet-explorer,vba,web-crawler,Internet Explorer,Vba,Web Crawler,我目前正在用VBA在Excel中构建一个爬虫程序,在几个在线参考资料的帮助下,从一个公共网站抓取表数据 然而,我需要一个额外的步骤,我需要识别我爬行的字体中使用的字体的颜色 例如:如果其中一些单词是红色的,而其余的是黑色的,我将能够识别它们。如何检测字体颜色 下面是我代码的一部分 For Each tbl In doc.getElementsByTagName("TABLE") tabno = tabno + 1 If tabno = 5 Then
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
假设字体元素始终是单元格中您关心的第一个也是唯一一个元素,您可以
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
谢谢你们的关心和帮助。非常感谢 我已经通过从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
rng.Value=cl.outerText
温度=cl.outerHTML
如果仪表(温度,“颜色=”)为0,则
rng.Value=rng.Value+“*此值的字体颜色与其他值不同”
如果结束
注意。指出代码中的错误。什么不起作用?你试过什么?嗨,我的代码很好用。我需要了解的是如何让VBA识别IE中使用的字体颜色:)那么您尝试过什么?您指的是IE中的文本吗?你能给我举个例子吗?谢谢你的关注。html中的文本是表格形式,或者,行中的一个数据,或者,具有与其他数据不同的字体颜色。例如,示例文本。我不知道如何让VBA识别它爬行的字体的颜色。嗨,Alex K.,我尝试了你的代码,但似乎遇到了一个错误:运行时错误“438”:对象不支持此属性或方法