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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1553 积分:11003 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2018/12/23 20:02:00 [只看该作者]

mark

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


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

老师你好:
1、下面代码为什么会少数据(红线下划部份)?如何调整?
2、如何把1、2、3、4等表的数据都提取出来?

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/AfficheShow/Home?AfficheID=7d220975-619a-41e9-9142-aadf97d346fe&IsInner=0&ModuleID=22")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Dim elems As object = web.Document.GetElementsByTagName("table")(0).GetElementsByTagName("tr")
Dim ndr As Row
For Each elem As object In elems
    Dim tds = elem.GetElementsByTagName("td")
    ndr = Tables("招标公告").AddNew()
    If tds.Count > 0  AndAlso tds.Count < 3
        'msgbox(tds(0).innerText & ":" & tds(1).innerText)
        ndr("名称") = tds(0).innerText
        ndr("内容") = tds(1).innerText
    End If
    If tds.Count > 3  AndAlso tds.Count < 5
        'msgbox(tds(0).innerText & ":" & tds(1).innerText & ",," & tds(2).innerText & ":" & tds(3).innerText)
        ndr("名称") = tds(0).innerText
        ndr("内容") = tds(1).innerText
        ndr("名称") = tds(2).innerText
        ndr("内容") = tds(3).innerText
    End If
Next


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

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





[此贴子已经被作者于2019/2/20 12:53:00编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
花开的声音
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1172 积分:8418 威望:0 精华:0 注册:2012/10/29 20:09:00
  发帖心情 Post By:2019/2/20 7:15:00 [只看该作者]

mark

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


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

老师在吗?帮我解决一下31楼的问题,谢谢

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


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

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/AfficheShow/Home?AfficheID=7d220975-619a-41e9-9142-aadf97d346fe&IsInner=0&ModuleID=22")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Output.Show( web.Document.Body.OuterHtml)

请自行分析网页内容,看需要的数据是在哪个标签里面的,根据对应的标签提取数据

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


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

老师你好,搞了几天还是不对,请帮忙解决一下,十分感谢!!!
1、下面代码为什么会少数据(红线下划部份)?如何调整?
2、如何把1、2、3、4等表的数据都提取出来?

Dim web As New System.Windows.Forms.WebBrowser()
web.scripterrorssuppressed = True
web.Navigate("http://www.hzctc.cn/AfficheShow/Home?AfficheID=7d220975-619a-41e9-9142-aadf97d346fe&IsInner=0&ModuleID=22")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Dim elems As object = web.Document.GetElementsByTagName("table")(0).GetElementsByTagName("tr")
Dim ndr As Row
For Each elem As object In elems
    Dim tds = elem.GetElementsByTagName("td")
    ndr = Tables("招标公告").AddNew()
    If tds.Count > 0  AndAlso tds.Count < 3
        'msgbox(tds(0).innerText & ":" & tds(1).innerText)
        ndr("名称") = tds(0).innerText
        ndr("内容") = tds(1).innerText
    End If
    If tds.Count > 3  AndAlso tds.Count < 5
        'msgbox(tds(0).innerText & ":" & tds(1).innerText & ",," & tds(2).innerText & ":" & tds(3).innerText)        '这个显示出来的数据是对的,如何增加到“招标公告”表中去
        ndr("名称") = tds(0).innerText
        ndr("内容") = tds(1).innerText
        ndr("名称") = tds(2).innerText
        ndr("内容") = tds(3).innerText
    End If
Next


此主题相关图片如下:20192202111290390.png
按此在新窗口浏览图片

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:招标公告 (1).table





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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/21 13:55:00 [只看该作者]

分析如果标签的内容(标题)属于1表的数据,就在1表新增行并赋值,如此类推,比如

web.Document.GetElementsByTagName("table")(0)是第一个表格,那么web.Document.GetElementsByTagName("table")(1)就是第二个表格

我这边运行半天打开的是一个空网页。也没有这个时间去帮您分析别人的网页,请自食其力。或者看看其他版主有没有时间帮您看看

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


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

有点蓝老师现在的问题是下面代码如何实现?
 msgbox(tds(0).innerText & ":" & tds(1).innerText & ",," & tds(2).innerText & ":" & tds(3).innerText)        '这个显示出来的数据是对的,如何增加到“招标公告”表中去
        ndr("名称") = tds(0).innerText
        ndr("内容") = tds(1).innerText
        ndr("名称") = tds(2).innerText
        ndr("内容") = tds(3).innerText


此主题相关图片如下:不规则的表.png
按此在新窗口浏览图片


此主题相关图片如下:代码1.png
按此在新窗口浏览图片


[此贴子已经被作者于2019/2/21 14:11:40编辑过]

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/21 14:16:00 [只看该作者]

这个意思?

ndr(tds(0).innerText) = tds(1).innerText

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


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

不是这样, 把数据导入到下表中:



图片点击可在新窗口打开查看此主题相关图片如下:不规则的表.png
图片点击可在新窗口打开查看


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


[此贴子已经被作者于2019/2/21 14:48:23编辑过]

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