我正在尝试获取每个专利号对应的发布日期。
这是 Excel 工作表:
数据库是espacenet.com
以下是您在 Excel 工作表中看到的第一项专利的链接:
http://worldwide.espacenet.com/searchResults?compact=false&PN=US7055777B2&ST=advanced&locale=en_EP&DB=EPODOC
在“出版信息”标题下,我需要将专利号与 Excel 工作表中的专利号进行匹配后获取日期。
代码如下:
Sub tryextraction()
Dim ie As New InternetExplorer
Dim sdd As String
Dim tdd() As String
Dim num0 As Integer
Dim num1 As Integer
Dim doc As HTMLDocument
Dim i As Integer
Dim j As Integer
ie.Visible = True
num1 = ActiveSheet.UsedRange.Rows.Count
For num0 = 2 To num1
ie.navigate "http://worldwide.espacenet.com/searchResults?compact=false&PN=" & Range("A" & num0) & "&ST=advanced&locale=en_EP&DB=EPODOC"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Set doc = ie.document
sdd = Trim(doc.getElementsByTagName("td")(5).innerText)
tdd() = Split(sdd, vbLf)
j = UBound(tdd)
For i = 0 To j
If InStr(tdd(i), "(") <> 0 Then
tdd(i) = Replace(tdd(i), " ", "")
tdd(i) = Replace(tdd(i), "(", "")
tdd(i) = Replace(tdd(i), ")", "")
If tdd(i) = Range("A" & num0).Value Then
Range("B" & num0).Value = tdd(i + 1)
End If
End If
Next i
Next num0
ie.Quit
End Sub
代码没有给出任何错误。代码运行完毕后,“发布日期”列保持空白。
包含发布信息的 html 标签已正确获取。
最佳答案
您在文档中搜索的 ID 后面有一些尾随空白字符,因此 tdd(i) = Range("A"& num0).Value
永远不会计算为 true。它不仅仅是一个空格,因此简单的 Trim(tdd(i)) = Range("A"& num0).Value
调用没有帮助。尝试使用 InStr(tdd(i), Range("A"& num0).Value)
如果这还不够好,您必须在执行此操作之前专门从字符串末尾删除 CRLF比较。
关于html - 从网页获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24061518/