以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  再次求助:写代码自动获取网页数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107975)

--  作者:W1234
--  发布时间:2017/10/13 15:26:00
--  再次求助:写代码自动获取网页数据


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

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

 

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

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

--  作者:有点甜
--  发布时间:2017/10/13 15:31:00
--  

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

 

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

 


--  作者:W1234
--  发布时间:2017/10/13 16:03:00
--  
甜版,能否帮忙写下代码。上面的参考我学习过,但一时难弄懂。谢谢!
--  作者:有点甜
--  发布时间: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
--  发布时间:2017/10/13 20:56:00
--  

谢谢,非常感谢!!!


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

--  作者:有点蓝
--  发布时间:2017/10/13 21:56:00
--  
帮助没有,已经超出帮助的范围,自行百度:https://www.baidu.com/baidu?word=Document.GetElementById


--  作者:W1234
--  发布时间:2017/10/13 22:34:00
--  
谢谢
--  作者:客人
--  发布时间: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的数据,再请版主指点一下,谢谢


--  作者:有点蓝
--  发布时间:2017/10/14 8:44:00
--  
网站要输入验证码才能查询到数据的,就是为了防止别人抓它的数据

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