Foxtable(狐表)用户栏目专家坐堂 → 这种网页数据如何抓取数据


  共有16343人关注过本帖树形打印复制链接

主题:这种网页数据如何抓取数据

帅哥哟,离线,有人找我吗?
ZJZK2018
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/10/16 22:09:00 [只看该作者]

.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.9.9.1
错误所在事件:窗口,网页数据抓取,Button3,Click
详细错误信息:
“0”的值对于“index”无效。“index”应介于 0 和 -1 之间。
参数名: index

 回到顶部
帅哥,在线噢!
有点蓝
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110334 积分:561518 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/16 22:15:00 [只看该作者]

elems = web.Document.GetElementById("Table1").GetElementsByTagName("th")
For i As Integer = 0 To elems.count-1
    msgbox(elems (i).InnerText)
Next

 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/10/16 23:41:00 [只看该作者]

下面代码出错

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=111E6F37-5AB7-4F3F-B56D-E355701A68E9&tenderID=416E3F38-00E8-4CC4-8D72-8DE2EDA078AC&ModuleID=486")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("Table1") IsNot Nothing
    Application.DoEvents
Loop

Dim elems As object = web.Document.GetElementsByTagName("div")
elems = web.Document.GetElementById("Table1").GetElementsByTagName("th")
Dim dtb As New DataTableBuilder("录入表")
For i As Integer = 0 To elems.count-1
    'msgbox(elems (i).InnerText)
    dtb.AddDef(elems (i).InnerText, Gettype(String), 250)
Next
dtb.Build()
MainTable = Tables("录入表")

elems = web.Document.GetElementById("Table1").GetElementsByTagName("tr")
Dim ndr As Row
For n As Integer = 1 To elems.count - 2
    Dim tds = elems(n).getelementsbytagname("td")
    For tn As Integer = 0 To tds.count -1
        ndr = Tables("录入表").AddNew()
        For Each dc As Col In Tables("录入表").Cols
            ndr(dc.Name) = tds(tn).InnerText
        Next
    Next
Next


图片点击可在新窗口打开查看此主题相关图片如下:55555534643.png
图片点击可在新窗口打开查看



 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/17 8:55:00 [只看该作者]

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=111E6F37-5AB7-4F3F-B56D-E355701A68E9&tenderID=416E3F38-00E8-4CC4-8D72-8DE2EDA078AC&ModuleID=486")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("Table1") IsNot Nothing
    Application.DoEvents
Loop


Dim elems As object = web.Document.GetElementsByTagName("div")
elems = web.Document.GetElementById("Table1").GetElementsByTagName("th")
Dim dtb As New DataTableBuilder("录入表")
For i As Integer = 0 To elems.count-1
    'msgbox(elems (i).InnerText)
    dtb.AddDef(elems (i).InnerText, Gettype(String), 250)
Next
dtb.Build()
MainTable = Tables("录入表")


elems = web.Document.GetElementById("Table1").GetElementsByTagName("tr")
Dim ndr As Row
For n As Integer = 1 To elems.count - 2
    Dim tds = elems(n).getelementsbytagname("td")
    ndr = Tables("录入表").AddNew()
    For tn As Integer = 0 To tds.count -1
        ndr(tn) = tds(tn).InnerText
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/10/17 11:20:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:11115.png
图片点击可在新窗口打开查看
十分感谢甜版,上面的问题解决了,不好意思又有一个新问题:
下面这段代码为什么只提取红框的数据,右边的数据怎么提取??如“工程名称”,”代理机构“

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=111E6F37-5AB7-4F3F-B56D-E355701A68E9&tenderID=416E3F38-00E8-4CC4-8D72-8DE2EDA078AC&ModuleID=486")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("Table1") IsNot Nothing
    Application.DoEvents
Loop

Dim elems As object = web.Document.GetElementsByTagName("div")
For Each elem As object In elems
    If elem.getattribute("classname") = "row cl" Then
        If elem.InnerText.contains("工程编号") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
        ElseIf elem.InnerText.contains("工程名称") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
        End If
        If elem.InnerText.contains("建设单位") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
        ElseIf elem.InnerText.contains("代理机构") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
        End If
        If elem.InnerText.contains("开标时间") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
        ElseIf elem.InnerText.contains("开标地点") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
        End If
    End If
Next


图片点击可在新窗口打开查看此主题相关图片如下:mmmqq.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/10/17 11:20:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/17 11:23:00 [只看该作者]

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=111E6F37-5AB7-4F3F-B56D-E355701A68E9&tenderID=416E3F38-00E8-4CC4-8D72-8DE2EDA078AC&ModuleID=486")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("Table1") IsNot Nothing
    Application.DoEvents
Loop


Dim elems As object = web.Document.GetElementsByTagName("div")
For Each elem As object In elems
    If elem.getattribute("classname") = "row cl" Then
        If elem.InnerText.contains("工程编号") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
            msgbox(elem.GetElementsByTagName("span")(1).innerText)
        End If
        If elem.InnerText.contains("建设单位") Then
            msgbox(elem.GetElementsByTagName("span")(0).innerText)
            msgbox(elem.GetElementsByTagName("span")(1).innerText)
        End If

    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/10/17 12:32:00 [只看该作者]

甜老师你好:我的需求是:
 把"row cl"改成"portlet-body",并遍历nms,这样如何调整??


Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=111E6F37-5AB7-4F3F-B56D-E355701A68E9&tenderID=416E3F38-00E8-4CC4-8D72-8DE2EDA078AC&ModuleID=486")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("Table1") IsNot Nothing
    Application.DoEvents
Loop

Dim nms() As String = {"工程编号","工程名称","建设单位","代理机构","开标时间","开标地点","代理人员"}
Dim elems As object = web.Document.GetElementsByTagName("div")
For Each elem As object In elems
    If elem.getattribute("classname") = "portlet-body" Then
        For Each nm As String In nms
            If elem.InnerText.contains(nm) Then
                msgbox(elem.GetElementsByTagName("span")(0).innerText)
                
            End If
        End If
    Next
Next
[此贴子已经被作者于2018/10/17 15:09:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/17 15:09:00 [只看该作者]

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=111E6F37-5AB7-4F3F-B56D-E355701A68E9&tenderID=416E3F38-00E8-4CC4-8D72-8DE2EDA078AC&ModuleID=486")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("Table1") IsNot Nothing
    Application.DoEvents
Loop


Dim nms() As String = {"工程编号","工程名称","建设单位","代理机构","开标时间","开标地点","代理人员"}
Dim elems As object = web.Document.GetElementsByTagName("span")
Dim i As Integer = 0
For Each elem As object In elems
    If elem.getattribute("classname") = "input-group" Then
        msgbox(elem.innerText)
        i += 1
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
ZJZK2018
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/10/17 16:25:00 [只看该作者]

甜老师你好,十分感谢你的指点。
下面这个网页数据如何提取??谢谢
http://www.hzctc.cn/AfficheShow/Home?AfficheID=1192f417-f6a2-4a92-9cd7-47f0c1eb3133&IsInner=0&ModuleID=22


图片点击可在新窗口打开查看此主题相关图片如下:88863018.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/10/17 16:33:00 [只看该作者]

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/AfficheShow/Home?AfficheID=1192f417-f6a2-4a92-9cd7-47f0c1eb3133&IsInner=0&ModuleID=22")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop

Dim elems As object = web.Document.GetElementsByTagName("table")(0).GetElementsByTagName("tr")

Dim i As Integer = 0
For Each elem As object In elems
    Dim tds = elem.GetElementsByTagName("td")
    msgbox(tds(0).innerText)
    msgbox(tds(1).innerText)
Next


 回到顶部
总数 72 上一页 1 2 3 4 5 6 7 8 下一页