Foxtable(狐表)用户栏目专家坐堂 → 求助:今日头条解析到数据表,结果运行出错,求解!


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

主题:求助:今日头条解析到数据表,结果运行出错,求解!

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/1 12:57:00 [显示全部帖子]

你这种方法无效了,人家用动态加载了,每次加载10行数据。

 

下面的方法也只能获取到10行。

 

Dim web As new System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
web.Navigate("http://toutiao.com/m6114233861/")

Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("content-left") IsNot Nothing AndAlso web.Document.GetElementById("content-left").GetElementsByTagName("li").count > 0
    Application.DoEvents
Loop
Dim lis = web.Document.GetElementById("content-left").GetElementsByTagName("li")
DataTables("文章列表").DataRows.Clear
For i As Integer = 0 To lis.count-1
    Dim lsa = lis(i).GetElementsByTagName("a")
    output.show(lsa(0).InnerHtml)
Next


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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/1 13:08:00 [显示全部帖子]

 你可以用手动的方式。放一个webbrowser控件,显示页面,然后滚动到最后(每次加载10行),直到加载完毕,你再用代码获取这个页面的数据。

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


加好友 发短信
等级:二尾狐 帖子:573 积分:2961 威望:0 精华:0 注册:2016/10/27 14:33:00
  发帖心情 Post By:2016/11/1 14:34:00 [显示全部帖子]

不可以指定行数或者页数。方法看6楼。

 

参考下面代码,灵活变通

 

Dim web As new System.Windows.Forms.WebBrowser
web.ScriptErrorsSuppressed = True
web.Navigate("http://toutiao.com/m6114233861/")

Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("content-left") IsNot Nothing AndAlso web.Document.GetElementById("content-left").GetElementsByTagName("li").count > 0
    Application.DoEvents
Loop
Dim lis = web.Document.GetElementById("content-left").GetElementsByTagName("li")
For i As Integer = 0 To lis.count-1
    Dim lsa = lis(i).GetElementsByTagName("a")
    If lsa(0).GetAttribute("className") = "title-box link" Then
        output.show(lsa(0).InnerHtml)
        output.show(lsa(0).GetAttribute("href"))
        Dim lsspan = lis(i).GetElementsByTagName("span")
        output.show(lsspan(0).InnerHtml & " " & lsspan(1).InnerHtml & " " & lsspan(2).InnerHtml)
    End If
Next


 回到顶部