1

我的目标是创建一个小型应用程序,当给定一个网站链接时,例如

http://digikey.com/product-detail/en/ATF1502ASV-15JU44/ATF1502ASV-15JU44-ND/1008571/

它将从其页面源中提取数据,例如

制造零件编号 项目描述等

我使用此代码获取页面源

Dim PartURL As String = "http://digikey.com/product-detail/en/LM567CN/LM567CN-ND/2607028"
Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(PartURL)
Dim response As System.Net.HttpWebResponse = request.GetResponse()
Dim sr As System.IO.StreamReader = New     System.IO.StreamReader(response.GetResponseStream())
Dim sourcecode As String = sr.ReadToEnd()
TextBox1.Text = sourcecode

但我发现了一些我不知道的东西它将访问并从此链接获取源代码

http://digikey.com/product-detail/en/ATF1502ASV-15JU44/ATF1502ASV-15JU44-ND/ 1008571`

但不会访问这个

http://digikey.com/product-detail/en/PIC18F45K20-I%2FPT/PIC18F45K20-I%2FPT-ND/1228485

我观察了很多,发现这两个链接之间的区别是第一个的零件号是ATF1502ASV-15JU44-ND,第二个是PIC18F45K20-I/PT-ND,前一个的名称没有“/”,但第二个有它,所以为了将部件号中的“/”与普通网络链接的“/”区分开来,他们把“%2F”替换为名称所以他们改变了

PIC18F45K20-I/PT-ND 至

PIC18F45K20-I%2FPT-ND

我不知道我的推断是否正确但是第二个链接总是显示错误并且无法访问源代码

而且,当我获得源代码时,我所做的是在源代码中搜索特定字符串“制造商零件号”,然后从该行中找到零件号

我相信会有更有效更简单的方法请帮助我

4

1 回答 1

1

这是VBA的代码

Sub xmlHttp()
    Dim xmlHttp As Object
    Dim strVal As String
    Dim URl As String

    URl = "http://www.digikey.com/product-detail/en/LM567CN/LM567CN-ND/2607028"
    Set xmlHttp = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    xmlHttp.Open "GET", URl, False
    xmlHttp.setRequestHeader "Content-Type", "text/xml"
    xmlHttp.send

    Dim html As Object
    Set html = CreateObject("htmlfile")

    html.body.innerHTML = xmlHttp.responseText

    Set thele = html.getElementsByTagName("th")

    For Each i In thele

        If i.innerHTML = "Manufacturer" Then
            strVal = i.NextSibling.innerText
            MsgBox "Manufacturer :" & strVal
        ElseIf i.innerHTML = "Manufacturer Part Number" Then
            strVal = i.NextSibling.innerText
            MsgBox "Manufacturer Part Number : " & strVal
        ElseIf i.innerHTML = "Description" Then
            strVal = i.NextSibling.innerText
            MsgBox "Description :" & strVal
        End If

    Next

End Sub
于 2013-06-02T18:49:35.417 回答