首页 > 其他分享 >vba抓取网页数据

vba抓取网页数据

时间:2024-01-13 14:36:48浏览次数:28  
标签:Dim vba http 电影 抓取 rst 网页 我们


哈喽,哈喽,大家好!大家2024发大财啦!

不知道,平时大家爱不爱看电影呢?从今年的贺岁档的拍片来看,今年的电影还挺多,而且国产优秀电影居多,元旦假期期间我也去看了部喜剧片,应该说在2023的年度还能看到一部优秀的国产喜剧片,还是挺开心的。大家看到这里是不是觉得走错频道了?难道我要来讲电影了?不,我们今天来讲讲怎么抓取网页上的数据。

既然,我们要讲抓取数据,那我们就需要找一个网站来测试,刚好,豆瓣也是平时我比较爱逛的一个网站,那我们就来爬一下电影的数据,这里我们不可以爬所有电影的数据,刚好豆瓣有一个榜单,叫豆瓣电影TOP250,那我们就来把上面的数据都取下来。

01、查看网页

这次我们先不急着上手操作,我们先来看一下网站:豆瓣电影 Top 250

打开后,我们按一下F12,查看一下网站的源码

vba抓取网页数据_access开发

在这里我们可以看到相应的电影名,我们一个个往下去找的话,其他的电影名称也都是这个span中,至于这个span元素是什么意思,这个可以大家去查找一个,这里我们就不多说了。接着往下看的话,我们可以看到这个span中class都是“Title”,那按照这个发现,我们就可以来写代码了。

02、建表

我们先在access当中创建一个表,如下图:

vba抓取网页数据_access数据库_02

这里,我们先取电影名称与评分,后期有时间,我们可以来完善一下,抓取电影的简介、导演、演员等信息。

03、创建窗体

接着,我们创建窗体,我们将表做成一个明细子窗体,在窗体上放一个按钮。

vba抓取网页数据_access_03

04、添加代码

最后,我们就可以来添加代码了,注意,这里需要引用一下"Microsoft HTML Object Library"

Private Sub Command0_Click()
    ' 设置要抓取的豆瓣电影页面
    Dim strSQL As String
    Dim rst As DAO.Recordset
    Dim url As String
    url = "https://movie.douban.com/top250"
    
    ' 创建一个 HTTP 对象
    Dim http As Object
    Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
    
'    ' 发送 HTTP 请求
'    http.Open "GET", url, False
'    http.Send
   
    Dim html As New MSHTML.HTMLDocument
    
    Dim gCount As Long
    Dim p As Long
 
    gCount = 250
    For p = 0 To gCount - 1 Step 25
        url = "https://movie.douban.com/top250?start=" & p
'        Debug.Print url
        http.Open "GET", url, False
        http.Send
        html.body.innerHTML = http.ResponseText
        Dim i As Long
        For i = 0 To html.getElementsByClassName("hd").length - 1
            Set rst = CurrentDb.OpenRecordset("T_豆瓣电影TOP250")
            rst.AddNew
            rst!电影名称 = html.getElementsByClassName("hd")(i).innerText
            rst!评分 = html.getElementsByClassName("rating_num")(i).innerText
            rst.Update
            
        Next i
    Next p
    MsgBox "抓取成功。", vbInformation
    Me.Child1.Requery
End Sub

代码比较简单,其实就是用getElementsByClassName()方法,找到相应的类名,然后把相应的数据取过来。

05、运行测试

最后,我们就可以运行测试一下了,这里我们可以看到250条数据都取到了。

vba抓取网页数据_access开发_04

这里抓取数据,我们是利用网页上的元素,那有些网页是以Json的格式,那类似这样的数该怎么去解析呢?关注我,以后给大家慢慢讲。

好了,大家可以去试一下了。

标签:Dim,vba,http,电影,抓取,rst,网页,我们
From: https://blog.51cto.com/willmiao/9232353

相关文章

  • vue-quill编辑器网页版
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content="w......
  • Android Webview判断网页加载完毕
    原文:AndroidWebview判断网页加载完毕-Stars-One的杂货小窝书接上文,在AndroidWebView获取html源码-Stars-One的杂货小窝此文讲到没有一个可以判断网页加载完毕的方法最近发现确实是有个解决方案,就是设置webViewClient里的onPageFinished方法判断当前webview进度,如下......
  • 通过网页中的 6 个特征字段检测钓鱼网站以及更简单的防钓鱼方式
    你可能会认为钓鱼网站很难检测和跟踪,但实际上,许多钓鱼网站都包含唯一标识它们的HTML片段。本文就以英国皇家邮政(Royal Mail)钓鱼网站为例来进行说明,它们都包含字符串css_4WjozGK8ccMNs2W9MfwvMVZNPzpmiyysOUq4_0NulQo。这些长而随机的字符串是追踪钓鱼网站的绝佳指标,几乎可以肯定......
  • 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程
    最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注。step1首先需要获取到Qrsig的值(流程已更改)RequestURL:https://ssl.ptlogin2.qq.com/ptqrshow?appid......
  • 2024最新网页设计趋势,十大预测抢先看!
    了解设计趋势对设计师来说很重要,可以获取灵感,设计出更符合当下用户喜爱的产品。那么,即将到来的2024年有哪些新的网页设计趋势呢?基于网络大数据的搜集和分析,本文对2024年网页设计趋势做出了十大预测,一起来看看吧!1、AI助力网页设计今年,ChatGPT等AI产品的爆火,对各行各业都产生了巨大影......
  • chatgpt中国免费网页版现已上线,用户可直接在线访问
    OpenAI公司近期推出了ChatGPT中国免费网页版,用户可以通过互联网直接访问。该版本支持中文交互,并且提供了与全球版本相同的功能和体验。ChatGPT中国版的推出,为中文用户提供了更加便捷的使用途径,无需进行复杂的注册和登录,即可体验到人工智能对话的魅力。它可以回答问题、生成文本、......
  • 使用R语言和pholcus库进行网页爬取的简单示例
    如果您想要下载网页上的丰富内容,pholcus库似乎是一个用于网页爬虫的工具,但请注意使用爬虫工具时需要遵守网站的使用规则和法律法规。未经允许的爬取行为可能违反网站的服务条款,并可能导致法律问题。以下是一个使用pholcus库的简单示例。请确保您已经安装了pholcus库,可以通过执行以......
  • 空中802.11帧的抓取
    既然是在研究WiFi,那就不能仅分析仿真器给出的pcap文件结果,还要去研究在实际环境中的WiFi设备之间的数据交换。利用WiFi网卡直接抓取空中的802.11信标帧是研究实际数据交互的方案之一。一般网卡都会有一个monitor模式(monitormode),在该模式下网卡无法连接到AP,但是可以将空中的所有......
  • 使用tcpdump抓取网络包,在wareshark查看对应请求及响应的最终报文
    tcpdump是Linux环境的抓包工具,可以使用此工具抓取指定host的所有网络包,在wareshark工具中进行查看。tcpdumphost  [IP或域名]   -w [文件名]示例如下:1、执行命令,抓取server端对webxml.com.cn站点的网络报文;2、在server端执行对webxml的SOAP请求;3、ctrl+c 终止抓取;4......
  • css制作网页基本框架是什么
    Laravel是一个流行的PHP框架,它具有出色的可测试性,可以帮助开发人员在更短的时间内编写可靠的代码。但是,即使使用了这个框架,也可能会出现测试覆盖率较低的情况。测试覆盖率是指代码中已由测试案例覆盖的部分比例。测试覆盖率越高,代码质量越高。在本文中,我们将分享几种技巧,帮助您提......