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


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

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

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
这种网页数据如何抓取数据  发帖心情 Post By:2018/7/20 20:49:00 [只看该作者]



查了专家坐堂,搞了一天一点思路都没有,还是请教老师,谢谢
网址:http://www.hzctc.cn/OpenBidRecord/Index?id=36177CC9-5F91-473F-84E6-A2EFA35D6DD9&tenderID=969B1A8D-1A57-4A21-864F-A5E98F8288FB&ModuleID=486

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:读取pdf.zip



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



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

[此贴子已经被作者于2018/7/20 20:50:53编辑过]

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


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

参考:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=49278

浏览器打开网页,按f12打开开发工具,自己分析网页结构


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


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


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

下面代码出错,如何调整?谢谢

Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=36177CC9-5F91-473F-84E6-A2EFA35D6DD9&tenderID=969B1A8D-1A57-4A21-864F-A5E98F8288FB&ModuleID=486")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop

'取数据
Dim Cols() As String = {"序号","投标企业","总监姓名","总报价","质量标准","中标工期","开标情况备注"}
Dim elems As object = web.Document.GetElementsByTagName("table1")(1).GetElementsByTagName("tr")
Dim m As Integer = 0
For Each elem As object In elems
    Dim i As Integer = -1
    m = m + 1
    If m > 10 Then  '因为网页的表格有标题,如果不判断,就会增加出一个空行
        Tables("开标标录").AddNew
    End If
    Dim tdelems As object =  elem.GetElementsByTagName("td")
    For Each tdelem As object In tdelems
        i = i + 1
        Tables("开标标录").Current(Cols(i)) = tdelem.Innertext
        'Tables("开标标录").Current("录入时间") = Date.Now
    Next
Next
Tables("开标标录").save


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


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


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

Dim elems As object = web.Document.GetElementsById("Table1").GetElementsByTagName("tr")

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


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

还是不对,你帮我调试一下。


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:读取pdf.table



[此贴子已经被作者于2018/7/20 22:40:10编辑过]

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


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


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


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

还是错的,能否帮我调试一下,我已上传了实例,谢谢


.NET Framework 版本:2.0.50727.8762
Foxtable 版本:2018.7.23.1
错误所在事件:窗口,网页数据抓取,Button1,Click
详细错误信息:
未将对象引用设置到对象的实例。

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


加好友 发短信
等级:超级版主 帖子:110790 积分:563882 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 8:53:00 [只看该作者]

没有时间去帮你们分析网页,自食其力

所有getelementbyid、GetElementsByTagName这些方法返回的对象都先判断一下是否是空值,或者是空数组

dim obj  = Document.getelementbyid("Table1")
if obj isnot nothing then
    dim trs = obj.GetElementsByTagName("tr")
   if trs.length > 0 then
 其它处理
   end if
end if

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


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

有点甜老师:

搞了二天还是搞不出来,对网页这方面的知识根本没有,能否帮我写一下,谢谢


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


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

参考代码,自己看懂和调整细节

 

Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("http://www.hzctc.cn/OpenBidRecord/Index?id=36177CC9-5F91-473F-84E6-A2EFA35D6DD9&tenderID=969B1A8D-1A57-4A21-864F-A5E98F8288FB&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
    End If
Next

elems = web.Document.GetElementById("Table1").GetElementsByTagName("tr")
For i As Integer = 1 To elems.count-2
    Dim tds = elems(i).getelementsbytagname("td")
    msgbox(tds(0).InnerText & " " & tds(1).InnerText)
Next


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