Foxtable(狐表)用户栏目专家坐堂 → 这种网页数据如何抓取数据


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

主题:这种网页数据如何抓取数据

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/22 21:09:00 [显示全部帖子]

老师下面代码出错,主要是想得到GetElementById("zoom")后面的dom结构
Dim web As New System.Windows.Forms.WebBrowser()
web.ScriptErrorsSuppressed = True   '解决网页页面的脚本错误提示
'web.Navigate(blwz)
web.Navigate("http://ztb.ggzy.zj.gov.cn/art/2023/6/15/art_1229682666_215031.html")
Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("zoom") IsNot Nothing    '用ID确定属性内容
    Application.DoEvents   '绘制控件的代码即刻生效
Loop
'''----------
Dim elems As object
elems = web.Document.GetElementById("zoom").GetElementsByTagName("div")  '可以根据你指定的参数,找出html源码中或xml内所有标签名称等于该参数的元素
Dim s   = web.Document.GetElementById("zoom").querySelector("div").lastChild.nodeName
Output.Show(s)

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/22 21:25:00 [显示全部帖子]




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


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/10/26 11:15:00 [显示全部帖子]

老师下面代码经常会出现:内存不够或系统资源出错等等
需求:
1、下面代码是否有不合理地方。 
2、0 To 100 改为 0 To 50 如何让代码等待5分钟,让电脑释放内存,再执行代码

Dim drs As List(Of DataRow) = DataTables("原始网址1").Select("开标网址 Is Not Null And 备注 Is Null")
For m As Integer = 0 To 100
    Dim web As New System.Windows.Forms.WebBrowser()
    web.ScriptErrorsSuppressed = True   '解决网页页面的脚本错误提示
    web.Navigate(drs(m)("开标网址"))
    Do Until web.ReadyState = 4 AndAlso web.Document.GetElementById("zoom") IsNot Nothing
        Application.DoEvents   '绘制控件的代码即刻生效
    Loop
    Dim elems As object
    Dim txt As String = ""
    Dim bdtxt As String = ""       ''表单
    '''****-----------开标信息----------
    elems = web.Document.GetElementById("zoom").GetElementsByTagName("p")   '以P为大节点划分
    If elems.Count > 0 Then
        For n As Integer = 0 To elems.Count - 1
            If elems(n) IsNot Nothing AndAlso elems(n).InnerText IsNot Nothing  AndAlso elems(n).InnerText.Trim() > "" Then
                txt &= elems(n).InnerText & vbCrlf
                'Else
                'msgbox("PDF")
            End If
        Next
    End If
    
    'elems = web.Document.GetElementById("zoom").GetElementsByTagName("tbody")   '找出最大"tbody"的ne值
    Dim ne As Integer = web.Document.GetElementById("zoom").GetElementsByTagName("tbody").Count -1    '找出最大"tbody"的ne值
    If ne >= 0 Then
        elems = web.Document.GetElementById("zoom").GetElementsByTagName("tbody")(ne).GetElementsByTagName("tr")  '找出最大"tbody"的ne值,下面的tr或td
        Dim th As Integer
        For i As Integer = 0 To elems.Count -1
            If elems(i).Innertext.Contains("序号") Then               '查出包含有"序号"的行作分界线
                th = i
                'msgbox("序号 = " & i)
            End If
            Dim tds As object = elems(i).GetElementsByTagName("td")
            For ii As Integer  = 0 To tds.Count -1
                If tds.Count >= 2 Then                      '开标记录表单,根据td列数量来区分开标记录与标段名称等
                    bdtxt &= tds(ii).InnerText & vbCrlf
                Else
                    txt &= tds(ii).InnerText & vbCrlf       '标段名称等
                End If
            Next
        Next
    End If
    drs(m)("备注") = StrToNarrow(txt)
    drs(m)("备注1") = bdtxt
Next

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2023/11/8 13:26:00 [显示全部帖子]

老师帮帮忙查一下面代码一执行就弹出下载框,如何取消下载??十分感谢!

Dim web As New System.Windows.Forms.WebBrowser()
web.ScriptErrorsSuppressed = True   '解决网页页面的脚本错误提示
'web.Navigate(blwz)
web.Navigate("https://ggzy.hzctc.hangzhou.gov.cn/AfficheShow/Home?AfficheID=41132382-118e-40c5-a1d3-4923e7495b6f&IsInner=0&IsHistory=0&ModuleID=22")
Do Until web.ReadyState = 4  'AndAlso web.Document.GetElementById("zoom") IsNot Nothing    '用ID确定属性内容
    Application.DoEvents   '绘制控件的代码即刻生效
Loop
'''----------
Dim elems As object
elems = web.Document.GetElementsByTagName("tr")
msgbox(elems.count)

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