Foxtable(狐表)用户栏目专家坐堂 → 求助: lsspan(0).InnerHtml这个位置有两个不同的值,阅读数与播放数,怎么写代码让这个位置的值,对应分别都识别为阅读数与播放数呢?


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

主题:求助: lsspan(0).InnerHtml这个位置有两个不同的值,阅读数与播放数,怎么写代码让这个位置的值,对应分别都识别为阅读数与播放数呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
求助: lsspan(0).InnerHtml这个位置有两个不同的值,阅读数与播放数,怎么写代码让这个位置的值,对应分别都识别为阅读数与播放数呢?  发帖心情 Post By:2016/11/7 15:02:00 [显示全部帖子]

求助: lsspan(0).InnerHtml这个位置有两个不同的值,阅读数与播放数,怎么写代码让这个位置的值,对应分别都识别为阅读数与播放数呢?
如果是阅读数,就将该值的数据写入阅读数列
如果是播放数,就将该值的数据写入播放数列
 lsspan(1).InnerHtml   lsspan(2).InnerHtml的值及位置不变化。


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


Dim 阅读数 As String = lsspan(0).InnerHtml
Dim Parts() As String = 阅读数.Split("阅读 or 播放")
这样写对不对?

【下面代码红色部分怎么更改呢?怎么判断呢?】

            Dim lsspan = lis(i).GetElementsByTagName("span")
            str &= lsspan(0).InnerHtml & " " & lsspan(1).InnerHtml & " " & lsspan(2).InnerHtml & vbcrlf & vbcrlf
            Dim 阅读数 As String = lsspan(0).InnerHtml
            Dim Parts() As String = 阅读数.Split("阅读")
            Dim 播放数 As String = lsspan(0).InnerHtml
            Dim Parts2() As String = 播放数.Split("播放")
            Dim 评论数 As String = lsspan(1).InnerHtml
            Dim Parts1() As String = 评论数.Split("评论")
            Dim bt As System.Windows.Forms.HtmlElement
            bt = web.Document.GetElementByID("keywords")   '今日头条单位标题
            
            str &= Parts(0) & vbcrlf
            str &= Parts1(0) & vbcrlf
            Dim abc As String= lsspan(2).InnerHtml
            Dim Parts2() As String = abc.Split(" ")
            str &= Parts2(0) & vbcrlf
            
            'Output.Show(bt.innerText & " " & bt.GetAttribute("content"))
            dr("单位") = bt.innerText & " " & bt.GetAttribute("content")
            'msgbox(bt.innerText & " " & bt.GetAttribute("content"))
            dr("文章标题") = a.InnerHtml
            dr("发布时间") =  Parts2(0) & vbcrlf
            dr("阅读数") = Parts(0)
            dr("评论数") = Parts1(0)
            'Dim lsa1 = lis(i).GetElementsByTagName("p")
            'For Each p As object In lsa1
            'If p.GetAttribute("className") = "abstract" Then
            'dr("正文") = p.InnerHtml
            'End If
            'Next
            
            dr("网址") = a.GetAttribute("href")
        End If
    Next
Next
output.Show(str)


[此贴子已经被作者于2016/11/7 16:59:43编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点色)?呃,这个是基础问题?...  发帖心情 Post By:2016/11/7 20:46:00 [显示全部帖子]

按照代码完善,出现下面两种错误 都不是想达到的效果  求解啊!
文章  网址  阅读数  评论数  发布时间  都要能够完整显示出来
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:今日头条测试.foxdb


运行效果1:

图片点击可在新窗口打开查看此主题相关图片如下:00.png
图片点击可在新窗口打开查看
代码如下:
DataTables("头条文章").DataRows.Clear
Dim web As new System.Windows.Forms.WebBrowser
web.Navigate("http://toutiao.com/m6192786832/")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Do Until web.DocumentText.contains("没有更多啦")
    web.Document.Window.ScrollTo(0, 0)
    web.Document.Window.ScrollTo(0, web.Document.Body.ScrollRectangle.Height)
    Application.DoEvents
Loop
Dim lis = web.Document.GetElementById("content-left").GetElementsByTagName("li")
Dim str As String = ""
For i As Integer = 0 To lis.count-1
    Dim lsa = lis(i).GetElementsByTagName("a")
    For Each a As object In lsa
        Dim dr As DataRow = DataTables("头条文章").AddNew()
        If a.GetAttribute("className") = "title-box link" Then
            
            str &= a.InnerHtml & vbcrlf
            str &= a.GetAttribute("href") & vbcrlf
            dr("网址") = a.GetAttribute("href")
            Dim bt As System.Windows.Forms.HtmlElement
            bt = web.Document.GetElementByID("keywords")   '今日头条单位标题
            dr("单位") = bt.innerText & " " & bt.GetAttribute("content")
            dr("文章标题") = a.InnerHtml
            
        Else
            If a.GetAttribute("className") = "y-left" Then
                Dim lsspan = lis(i).GetElementsByTagName("span")
                If lsspan(0).InnerHtml.contains("阅读") Then
                    str &= lsspan(0).InnerHtml & " " & lsspan(1).InnerHtml & " " & lsspan(2).InnerHtml & vbcrlf & vbcrlf
                    Dim 阅读数 As String = lsspan(0).InnerHtml
                    Dim Parts() As String = 阅读数.Split("阅读")
                    dr("阅读数") = Parts(0)
                    Dim 评论数 As String = lsspan(1).InnerHtml
                    Dim Parts1() As String = 评论数.Split("评论")
                    dr("评论数") = Parts1(0)
                    dr("发布时间") =  lsspan(2).InnerHtml               '
                Else
                    If lsspan(0).InnerHtml.contains("播放") Then
                        str &= lsspan(0).InnerHtml & " " & lsspan(1).InnerHtml & " " & lsspan(2).InnerHtml & vbcrlf & vbcrlf
                        Dim 阅读数 As String = lsspan(0).InnerHtml
                        Dim Parts2() As String = 阅读数.Split("播放")
                        dr("阅读数") = Parts2(0)
                        output.Show(Parts2(0))
                        Dim 评论数 As String = lsspan(1).InnerHtml
                        Dim Parts1() As String = 评论数.Split("评论")'
                        dr("评论数") = Parts1(0)
                        dr("发布时间") =  lsspan(2).InnerHtml
                    End If
                End If
            End If
        End If
    Next
Next
output.Show(str)




运行效果2:

图片点击可在新窗口打开查看此主题相关图片如下:0.png
图片点击可在新窗口打开查看
运行代码2:
DataTables("头条文章").DataRows.Clear
Dim web As new System.Windows.Forms.WebBrowser
web.Navigate("http://toutiao.com/m6192786832/")
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Do Until web.DocumentText.contains("没有更多啦")
    web.Document.Window.ScrollTo(0, 0)
    web.Document.Window.ScrollTo(0, web.Document.Body.ScrollRectangle.Height)
    Application.DoEvents
Loop
Dim lis = web.Document.GetElementById("content-left").GetElementsByTagName("li")
Dim str As String = ""
For i As Integer = 0 To lis.count-1
    Dim lsa = lis(i).GetElementsByTagName("a")
    For Each a As object In lsa
        If a.GetAttribute("className") = "title-box link" Then
            Dim dr As DataRow = DataTables("头条文章").AddNew()
            str &= a.InnerHtml & vbcrlf
            str &= a.GetAttribute("href") & vbcrlf
            If a.GetAttribute("className") = "y-left" Then
                Dim lsspan = lis(i).GetElementsByTagName("span")
                If lsspan(0).InnerHtml.contains("阅读") Then
                    str &= lsspan(0).InnerHtml & " " & lsspan(1).InnerHtml & " " & lsspan(2).InnerHtml & vbcrlf & vbcrlf
                    Dim 阅读数 As String = lsspan(0).InnerHtml
                    Dim Parts() As String = 阅读数.Split("阅读")
                    dr("阅读数") = Parts(0)
                    MessageBox.Show(Parts(0))
                    Dim 评论数 As String = lsspan(1).InnerHtml
                    Dim Parts1() As String = 评论数.Split("评论")
                    Dim bt As System.Windows.Forms.HtmlElement
                    bt = web.Document.GetElementByID("keywords")   '今日头条单位标题
                    dr("单位") = bt.innerText & " " & bt.GetAttribute("content")
                    dr("文章标题") = a.InnerHtml
                    dr("发布时间") =  lsspan(2).InnerHtml
                    dr("评论数") = Parts1(0)               '
                    dr("网址") = a.GetAttribute("href")
                Else
                    If lsspan(0).InnerHtml.contains("播放") Then
                        str &= lsspan(0).InnerHtml & " " & lsspan(1).InnerHtml & " " & lsspan(2).InnerHtml & vbcrlf & vbcrlf
                        Dim 阅读数 As String = lsspan(0).InnerHtml
                        Dim Parts2() As String = 阅读数.Split("播放")
                        dr("阅读数") = Parts2(0)
                        MessageBox.Show(Parts2(0))
                        Dim 评论数 As String = lsspan(1).InnerHtml
                        Dim Parts1() As String = 评论数.Split("评论")
                        Dim bt As System.Windows.Forms.HtmlElement
                        bt = web.Document.GetElementByID("keywords")   '今日头条单位标题
                        'Output.Show(bt.innerText & " " & bt.GetAttribute("content"))
                        dr("单位") = bt.innerText & " " & bt.GetAttribute("content")
                        'msgbox(bt.innerText & " " & bt.GetAttribute("content"))
                        dr("文章标题") = a.InnerHtml
                        dr("发布时间") =  lsspan(2).InnerHtml
                        
                        dr("评论数") = Parts1(0)
                        'Dim lsa1 = lis(i).GetElementsByTagName("p")
                        'For Each p As object In lsa1
                        'If p.GetAttribute("className") = "abstract" Then
                        'dr("正文") = p.InnerHtml
                        'End If
                        'Next
                        '
                        dr("网址") = a.GetAttribute("href")
                    End If
                End If
            End If
        End If
    Next
Next
output.Show(str)
[此贴子已经被作者于2016/11/7 20:55:54编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)第一步,输出网页内容就行分析DataTa...  发帖心情 Post By:2016/11/7 21:57:00 [显示全部帖子]

嗯  我是直接使用chrome浏览器的开发者工具 
第二步呢?

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)[upload=png,1.png]UploadFile/2016-...  发帖心情 Post By:2016/11/7 22:15:00 [显示全部帖子]

嗯  遍历到了LI下面的元素之后怎么判断“阅读”与“播放”呢?
span会在视频图文下 有四个值  在图文下 有三个值

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

图片点击可在新窗口打开查看此主题相关图片如下:11111.png
图片点击可在新窗口打开查看
初步判断以这个为准进行检索数据
class="y-left"
但是结果没有达到理想

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)一定的编程基础知识+网页基础+一定的...  发帖心情 Post By:2016/11/7 22:49:00 [显示全部帖子]

谢谢!我一定仔细读读,找到他们的规律性,及操作技巧。

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


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点蓝)有个特殊字符显示不了,9楼更新了一...  发帖心情 Post By:2016/11/8 1:39:00 [显示全部帖子]

ok 谢谢


 回到顶部