Foxtable(狐表)用户栏目专家坐堂 → 求助:大红袍老师 还是网页列表分页问题 请多多费心了 谢谢!


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

主题:求助:大红袍老师 还是网页列表分页问题 请多多费心了 谢谢!

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助:大红袍老师 还是网页列表分页问题 请多多费心了 谢谢!  发帖心情 Post By:2016/5/12 19:32:00 [只看该作者]

http://www.gzwengan.jcy.gov.cn/gzdt
这个是文章列表地址:

下述代码想获取文章列表的页数   
Dim web As new System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
web.Navigate("http://www.gzwengan.jcy.gov.cn/gzdt/")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop

Dim pg = web.Document.GetElementById("prevPage ").GetElementsByTagName("a")
Dim mpg As Integer = 1
If pg.count > 1 Then
    mpg = pg(pg.count-2).Innertext
    output.show(mpg)
End If

For i As Integer = 1 To mpg
    web.Navigate( "http://www.gzwengan.jcy.gov.cn/gzdt/index_" & i & ".shtml")
    Do Until web.ReadyState = 4
        Application.DoEvents
    Loop
    
    'Dim i As Integer = 0
    'Dim tb1s = web.document.GetElementsByTagName("table")(36)
    'For Each tb1 As object In tb1s.GetElementsByTagName("tr")
    'Dim sa = tb1.GetElementsByTagName("a")
    'If sa.count > 0 Then
    'Dim a = sa(0)
    'Dim dr As DataRow = DataTables("官网文章").AddNew()
    'Dim fwdw As WinForm.ComboBox = e.Form.Controls("ComboBox1")
    'Dim  lmfl As WinForm.ComboBox = e.Form.Controls("ComboBox2")
    'dr("单位") = fwdw.Value
    'dr("文章标题") = a.innertext
    'dr("文章分类") =lmfl.Value
    'dr("网址") = a.GetAttribute("href")
    'Dim shijian As String = (FileSys.GetName(a.GetAttribute("href")).Insert(5,"-")).Insert(8,"-")
    'Dim Parts() As String = shijian.Split("_")
    'dr("发布时间") =Parts(0).Remove(0,1)
    'End If
Next
''Next
代码运行报错:

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

下面是网页代码中显示页数的代码:

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



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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 19:51:00 [只看该作者]

 无语,不要照搬啊。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 20:02:00 [只看该作者]

Dim web As new System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
web.Navigate("http://www.gzwengan.jcy.gov.cn/gzdt/")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop

Dim pg = web.Document.GetElementById("num")
pg.SetAttribute("Value", 1)
Dim inputs = web.Document.GetElementsByTagName("input")
For Each input As object In inputs
    If input.GetAttribute("type") = "submit" Then
        input.InvokeMember("click")
        Do Until web.document.GetElementsByTagName("table").count > 36
            Application.DoEvents
        Loop
       
        output.show(web.documenttext)
    End If
Next


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)Dim web As new System.Windows.Form...  发帖心情 Post By:2016/5/13 8:58:00 [只看该作者]

大红袍老师 上述代码执行无结果 
执行下面的代码后死机
Dim web As new System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
Dim lmdz As WinForm.ComboBox = e.Form.Controls("ComboBox3")
web.Navigate(lmdz.Value)
'web.Navigate(http://www.gzwengan.jcy.gov.cn/gzdt/)

Do Until web.ReadyState = 4
    Application.DoEvents
Loop

Dim pg = web.Document.GetElementById("num")
pg.SetAttribute("Value", 1)
Dim inputs = web.Document.GetElementsByTagName("input")
For Each input As object In inputs
    If input.GetAttribute("type") = "submit" Then
        input.InvokeMember("click")
        Do Until web.document.GetElementsByTagName("table").count > 36
            Application.DoEvents
        Loop     
        ’output.show(web.documenttext)
    End If
    'Dim i As Integer = 0
    Dim tb1s = web.document.GetElementsByTagName("table")(36)
    For Each tb1 As object In tb1s.GetElementsByTagName("tr")
        Dim sa = tb1.GetElementsByTagName("a")
        If sa.count > 0 Then
            Dim a = sa(0)
            Dim dr As DataRow = DataTables("官网文章").AddNew()
            Dim fwdw As WinForm.ComboBox = e.Form.Controls("ComboBox1")
            Dim  lmfl As WinForm.ComboBox = e.Form.Controls("ComboBox2")
            dr("单位") = fwdw.Value
            dr("文章标题") = a.innertext
            dr("文章分类") =lmfl.Value
            dr("网址") = a.GetAttribute("href")
            Dim shijian As String = (FileSys.GetName(a.GetAttribute("href")).Insert(5,"-")).Insert(8,"-")
            Dim Parts() As String = shijian.Split("_")
            dr("发布时间") =Parts(0).Remove(0,1)
        End If
    Next
Next


图片点击可在新窗口打开查看此主题相关图片如下:34d6.tm.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table




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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/13 9:36:00 [只看该作者]

Dim web As new System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
Dim lmdz As WinForm.ComboBox = e.Form.Controls("ComboBox3")
web.Navigate(lmdz.Value)
'web.Navigate("http://www.gzfuquan.jcy.gov.cn/gzdt")

Do Until web.ReadyState = 4
    Application.DoEvents
Loop


Dim obj = web.document.GetElementsByTagName("table")(37)
Dim count = obj.InnerText.Substring(1,1)
msgbox(count)
For i As Integer = 1 To count
    Dim pg = web.Document.GetElementById("num")
    pg.SetAttribute("Value", i)
    Dim inputs = web.Document.GetElementsByTagName("input")
    For Each input As object In inputs
        If input.GetAttribute("type") = "submit" Then
            input.InvokeMember("click")
            Do Until web.document.GetElementsByTagName("table").count > 36
                Application.DoEvents
            Loop
            Dim tb1s = web.document.GetElementsByTagName("table")(36)
            For Each tb1 As object In tb1s.GetElementsByTagName("tr")
                Dim sa = tb1.GetElementsByTagName("a")
                If sa.count > 0 Then
                    Dim a = sa(0)
                    Dim dr As DataRow = DataTables("官网文章").AddNew()
                    Dim fwdw As WinForm.ComboBox = e.Form.Controls("ComboBox1")
                    Dim  lmfl As WinForm.ComboBox = e.Form.Controls("ComboBox2")
                    dr("单位") = fwdw.Value
                    dr("文章标题") = a.innertext
                    dr("文章分类") =lmfl.Value
                    dr("网址") = a.GetAttribute("href")
                    Dim shijian As String = (FileSys.GetName(a.GetAttribute("href")).Insert(5,"-")).Insert(8,"-")
                    Dim Parts() As String = shijian.Split("_")
                    dr("发布时间") =Parts(0).Remove(0,1)
                End If
            Next
        End If
    Next
   
Next


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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(大红袍)Dim web As new System.Windows.Form...  发帖心情 Post By:2016/5/13 9:48:00 [只看该作者]

不知道是不是网速问题 还是代码问题 上述代码运行后 速度超慢 至少近两分钟才会有结果 如果遇见数据多的话 那不是很麻烦?
有没有办法改进呢?

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/13 9:56:00 [只看该作者]

 我测试,没有任何问题。

 

 你把你所有的foxtable项目先关闭后再测试。


 回到顶部