我有一个来自HTML源代码的大字符串(大约1,000,000个字符)。我正在使用msinet.ocx查看来自适当网站的文本。我写了一小段代码,以便找到出现在不同关键短语(“组件附件矩阵”)之前的关键短语("pkid="),但它不能正常工作。这就是我现在所拥有的:
workbench = Cells(columnNumber, 1).Value
myURL = "http://beams.us.yazaki.com/Beams/ViewDetails.aspx?topic=document&pkid=" _
& workbench
Dim inet1 As Inet
Dim mypage As String
Set inet1 = New Inet
With inet1
.Protocol = icHTTP
.URL = myURL
mypage = .OpenURL(.URL, icString)
End With
CAMnum = InStr(mypage, "Component Accessory Matrix")
intStart = InStrRev(mypage, "pkid=", CAMnum) + 5
newnum = Mid(mypage, intStart, 6)
Cells(columnNumber, 2).Value = newnum问题似乎出在mypage = .OpenURL(.URL, icString)上;当我运行len(mypage)时,它返回的值大约是100,000,而实际上它应该返回的值大约是100,000。有人能解释一下吗?
发布于 2012-07-10 23:43:36
使用InStr和InStrRev,找到您的字符串,然后向后查找。一旦你有了那个位置,向前看,直到我们找到引号字符。最后,使用这些位置来获取字符串
pos1 = InStrRev(YourXMLString, "pkid=", InStr(YourXMLString, "Component Accessory Matrix")) + 5 ' length of "pkid="
pos2 = InStr(pos1, YourXMLString, Chr(34)) ' Chr(34)="
FoundString = Mid$(YourXMLString, pos1, pos2 - pos1)请注意,如果"Component Accessory Matrix“缺失,或者前面没有" pkid=”,或者引号不是分隔符,或者pkid=和引号之间有更多的文本,代码将失败和/或产生无意义的结果。
发布于 2012-07-11 00:18:39
使用HTML DOM。
Dim html As Object‘MSHTML.HTMLDocument Set html = CreateObject("htmlfile") html.body.innerHTML = "your HTML code here“
td元素的集合:Dim tdElements As Object‘MSHTML.IHTMLElementCollection Set tdElements = html.getElementsByTagName("td")
td元素的内部文本。Dim tdElement As Object‘MSHTML.IHTMLElement Dim i As String As string If i=1 to tdElements.Count If tdElements.Item(i).innerText = "Component Accessory Matrix“Then’get previous Set tdElement = tdElements.Item(i - 1) textToParse = tdElement.innerText Exit For End If Next I
解析字符串
我将用=拆分得到的字符串并获取第二个元素,然后用"拆分该字符串并获取第一个元素。那就只剩下300451了。
Here's a further example if you need it。
https://stackoverflow.com/questions/11416301
复制相似问题