Foxtable(狐表)用户栏目专家坐堂 → 再次求助:写代码自动获取网页数据


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

主题:再次求助:写代码自动获取网页数据

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


加好友 发短信
等级:婴狐 帖子:41 积分:344 威望:0 精华:0 注册:2017/8/7 9:15:00
再次求助:写代码自动获取网页数据  发帖心情 Post By:2017/10/13 15:26:00 [只看该作者]


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

如上图,先把网页打开,选择条件都输好,点查询后,网页上就会出来数据,怎样写代码把这1562条数据自动导入foxtabl中一同样结构的表中。

 

版主或哪位高人能否帮忙直接写一下代码,非常感谢!!最好先判断下网页是否打开,是否点了查询按钮。网页打开后点查询才有数据出来

[此贴子已经被作者于2017/10/13 15:29:44编辑过]

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


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

不同的网页有不同的截取信息的方式。

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=105240&skin=0

 


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


加好友 发短信
等级:婴狐 帖子:41 积分:344 威望:0 精华:0 注册:2017/8/7 9:15:00
  发帖心情 Post By:2017/10/13 16:03:00 [只看该作者]

甜版,能否帮忙写下代码。上面的参考我学习过,但一时难弄懂。谢谢!

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


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

比如,这个网址 http://hb.122.gov.cn/views/examappointpub.html

 

就可以这样写代码获取

 

Dim web = Forms("窗口1").controls("webbrowser1").basecontrol
Dim count = web.Document.GetElementById("planContent").GetElementsByTagName("span")(0).InnerText
msgbox(count)
For k As Integer = 1 To Math.Ceiling(count / 10)
    Dim tb = web.Document.GetElementById("tableContent")
    Dim trs = tb.GetElementsByTagName("tr")   '根据标签得到数据集合
    For i As Integer = 1 To trs.count-1
        output.show(trs(i).InnerText)
        Dim tds = trs(i).GetElementsByTagName("td")
        For j As Integer = 0 To tds.count-1
            output.show(tds(j).InnerText)
        Next
    Next
    Do Until web.Document.GetElementById("mypagination1") IsNot Nothing
        Application.DoEvents
    Loop
    Dim pgs = web.Document.GetElementById("mypagination1")
    For Each pg As object In pgs.GetElementsByTagName("a")
        If pg.InnerText = "下一页" Then
            pg.InvokeMember("click")
            Exit For
        End If
    Next
Next

 


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


加好友 发短信
等级:婴狐 帖子:41 积分:344 威望:0 精华:0 注册:2017/8/7 9:15:00
  发帖心情 Post By:2017/10/13 20:56:00 [只看该作者]

谢谢,非常感谢!!!


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


加好友 发短信
等级:婴狐 帖子:41 积分:344 威望:0 精华:0 注册:2017/8/7 9:15:00
  发帖心情 Post By:2017/10/13 21:26:00 [只看该作者]

再请教一下版主,类似web.Document.GetElementById 这些,帮助里有介绍吗?怎样学习一下相关知识?上面的代码我正在试,但还是不知道怎样导入到foxtable中的考试预约计划表(表包括序号,考试时间,考试场地,考试场次,普通预约计划等列)。谢谢
[此贴子已经被作者于2017/10/13 21:32:10编辑过]

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


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

帮助没有,已经超出帮助的范围,自行百度:https://www.baidu.com/baidu?word=Document.GetElementById


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


加好友 发短信
等级:婴狐 帖子:41 积分:344 威望:0 精华:0 注册:2017/8/7 9:15:00
  发帖心情 Post By:2017/10/13 22:34:00 [只看该作者]

谢谢

 回到顶部
客人(27.21.*.*)
  9楼


  发帖心情 Post By:2017/10/13 23:48:00 [只看该作者]

我将参考的代码按我的理解改了一下,如下:


Dim web As New System.Windows.Forms.WebBrowser()
web.Navigate("http://hb.122.gov.cn/views/examappointpub.html")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop



'取数据
Dim Cols() As String = { "序号","考试日期","考试场地","考试场次","普通预约计划","优先预约计划","操作" }


Dim elems As object = web.Document.GetElementById("list_elem").GetElementsByTagName("tr")
Dim m As Integer = 0
For Each elem As object In elems
    Dim i As Integer = -1
   
    m = m + 1
    If m > 1 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
        
         
    Next
Next


 


 


不能实现导出网页https://hb.122.gov.cn/views/examappointpub.html的数据,再请版主指点一下,谢谢


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


加好友 发短信
等级:超级版主 帖子:110810 积分:563988 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/10/14 8:44:00 [只看该作者]

网站要输入验证码才能查询到数据的,就是为了防止别人抓它的数据

获取并填入验证码,普通的代码做不到的

 回到顶部
总数 11 1 2 下一页