html - 从网页获取数据

标签 html excel vba web-scraping

我正在尝试获取每个专利号对应的发布日期。

这是 Excel 工作表:

enter image description here

数据库是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/

相关文章:

shell - 使用 shell32.dll 声明函数 Excel Vba

sql - 使用excel vba将用户表单数据插入Access表

sql-server - 从 Powerpoint 连接到 SQL Server

javascript - 使用 jQuery 动态添加视频元素

html - 将 'embedded' XML 文档转换为 XSLT (1.0) 中的 CDATA 输出

java - 如何使用 DynamicJasper 创建包含列小计公式的 Excel 电子表格?

vba - 求和列excel vba多个外部文件迭代

html - & 是否需要在元描述中是 & ?

html - 如何在 Kickstarter 上创建下拉菜单

php - 导出表时如何创建新列。 Laravel maat网站/excel