Foxtable(狐表)用户栏目专家坐堂 → 【已解决】[求助]通过元素align、class获取文字。如何获取网页数据?


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

主题:【已解决】[求助]通过元素align、class获取文字。如何获取网页数据?

帅哥,在线噢!
有点蓝
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106089 积分:539550 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/12 17:31:00 [只看该作者]

刷新网页是正常的。弹出什么错误?

msgbox(elem.innerText)改为保存表格的代码即可

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/1/12 17:51:00 [只看该作者]

dim Serial as Integer=1
dim txt as String
遍历代码
if 获取值=Serial then
上一条txt新建为数据
Serial =Serial +1
else
txt =txt &“;”&获取值
end if


数据再分出各列

不会保存表格的代码,做成了这样。以序号分出数据,然后整条数据保存到另一个表格,另一个表格代码再分出各列

感觉不是怎么靠谱

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/1/13 11:49:00 [只看该作者]

Dim web As System.Windows.Forms.WebBrowser = e.form.controls("webbrowser1").Basecontrol
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Dim elems As object = web.Document.GetElementsByTagName("div")
Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String
Dim a5 As String
Dim a6 As String
Dim a7 As String
Dim a8 As String
Dim a9 As String
Dim a10 As String
For Each elem As object In elems
    If elem.getattribute("classname") = "cell" Then
        a1=elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a2=elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a3=elem.innerText
    End If
    
    If elem.getattribute("classname") = "cell" Then
        a4=elem.innerText
    End If
    
    If elem.getattribute("classname") = "cell" Then
        a5=elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a6=elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a7=elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a8=elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a9 =elem.innerText
    End If
    If elem.getattribute("classname") = "cell" Then
        a10=elem.innerText
    End If
Dim dr As Row = Tables("表A").AddNew()
dr("第一列")=a1
dr("第二列")=a2
dr("第三列")=a3
dr("第四列")=a4
dr("第六列")=a6
dr("第五列")=a5
dr("第七列")=a7
dr("第八列")=a8
dr("第九列")=a9
dr("第十列")=a10


Next


我这样写的,但是不行,变成了一行都是一样的

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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/1/13 12:20:00 [只看该作者]

Dim web As System.Windows.Forms.WebBrowser = e.form.controls("webbrowser1").Basecontrol
Do Until web.ReadyState = 4
    Application.DoEvents
Loop
Dim elems As object = web.Document.GetElementsByTagName("div")
Dim a2 As String
Dim a3 As String
Dim a4 As String

For Each elem As object In elems
    If elem.getattribute("classname") = "cell" Then
        If elem.innerText Like "???????????????" Then
            a2=elem.innerText
        End If
        If elem.innerText Like "############" Or elem.innerText Like "##############" Then
            a3=elem.innerText
        End If
        If elem.innerText Like "???????????????????" Then
            a4=elem.innerText
        End If
        If elem.innerText="否" Then
            Dim dr As Row = Tables("表A").AddNew()
            dr("第一列")=a2
            dr("第二列")=a3
            dr("第三列")=a4
            a2=""
            a3=""
            a4=""
        End If
    End If
Next


我这样做了一个,但是创建重复了一遍,这是为啥

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


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

Dim web As System.Windows.Forms.WebBrowser = e.form.controls("webbrowser1").Basecontrol
Dim elems As object = web.Document.GetElementsByTagName("div")
Dim ls As new List(of String)
For Each elem As object In elems
    If elem.getattribute("classname") = "cell" Then
        ls.add(elem.innerText)
    End If
Next

msgbox(ls.count)
If ls.count >= 10 Then
   
    Dim dr As Row = Tables("表A").AddNew()
    dr("第一列")=ls(0)
    dr("第二列")=ls(1)
    dr("第三列")=ls(2)
    dr("第四列")=ls(3)
End If


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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/1/14 19:19:00 [只看该作者]

想问问,如果没有class,只有这样的代码,能不能通过align获取?要怎么获取?
<td align="left">内物衣服,袋子包装</td>



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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/1/14 19:20:00 [只看该作者]

您这个只获取到了第一行,需要的内容没有

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


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

以下是引用zto001在2019/1/14 19:19:00的发言:
想问问,如果没有class,只有这样的代码,能不能通过align获取?要怎么获取?
<td align="left">内物衣服,袋子包装</td>


 

msgbox(elem.getattribute("align"))

If elem.getattribute("align") = "left" Then


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


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

以下是引用zto001在2019/1/14 19:20:00的发言:
您这个只获取到了第一行,需要的内容没有

 

能否做一个具体实例发上来测试?


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


加好友 发短信
等级:六尾狐 帖子:1465 积分:10397 威望:0 精华:0 注册:2018/10/16 11:42:00
  发帖心情 Post By:2019/1/15 12:44:00 [只看该作者]

我用自己的方法把他变成了表格。如果后续有不懂再问吧,现在问题解决了。谢谢啦。

 回到顶部
总数 30 上一页 1 2 3