vba 在网页中抓取指定内容

简介: vba 在网页中抓取指定内容

vba程序从网页里抓取想要的内容,如下代码可抓取autopiano.cn网站上的所有曲谱和歌词:

Private Sub MacraGrabTunes()
Dim iBegin, iEnd, iRow As Integer
Dim t0, t1 As Single
Dim Sign1, Sign2 As String
Dim strHtml, strTitle, strTune As String
Dim Web1 As Object
Set Web1 = CreateObject("Msxml2.ServerXMLHTTP.3.0")
Application.ScreenUpdating = False
t0 = Timer
For i = 1 To 5000
    strURL = "https://www.autopiano.cn/post/" & i
    Web1.Open "GET", strURL, False
    On Error Resume Next
    Web1.Send
    strHtml = Web1.responseText
    If Err < 0 Then
        strHtml = "检测网址找不到或没返回信息!"
        MsgBox strHtml
    Else
        Sign1 = "<div class=""section-content"">"
        iBegin = InStr(strHtml, Sign1)
        If iBegin < 1 Then
            strHtml = "没找到歌谱"
        Else
            Sign1 = "<title>"
            Sign2 = "- 自由钢琴"
            iBegin = InStr(strHtml, Sign1)
            iEnd = InStr(strHtml, Sign2)
            strTitle = Mid(strHtml, iBegin + Len(Sign1), iEnd - iBegin - Len(Sign1) - 1)
            Sign1 = "<div class=""section-content"">"
            iBegin = InStr(strHtml, Sign1)
            strHtml = Mid(strHtml, iBegin - 1, Len(strHtml))
            Sign2 = "</div>"
            iBegin = InStr(strHtml, Sign1)
            iEnd = InStr(strHtml, Sign2)
            strTune = Mid(strHtml, iBegin + Len(Sign1) + 1, iEnd - iBegin - Len(Sign1) - 1)
            Sign1 = "<div class=""section lyric-section"">"
            iBegin = InStr(strHtml, Sign1)
            If iBegin > 0 Then
                strHtml = Mid(strHtml, iBegin - 1, Len(strHtml))
                Sign1 = "<div class=""section-content"">"
                iBegin = InStr(strHtml, Sign1)
                iEnd = InStr(strHtml, Sign2)
                strHtml = Mid(strHtml, iBegin + Len(Sign1) + 1, iEnd - iBegin - Len(Sign1) - 1)
            Else
                strHtml = "-NULL-"
            End If
            If Len(strHtml) < 4 Then strHtml = "-NULL-"
            iRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
            If iRow < 5 Then iRow = 5
            Cells(iRow, 1) = i
            Cells(iRow, 2) = strTitle
            Cells(iRow, 3) = strTune
            Cells(iRow, 4) = strHtml
            t1 = Timer
            Do
                DoEvents
            Loop While Timer - t1 < 0.02
        End If
    End If
Next
Cells.Replace What:="<p>=", Replacement:="'=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="<p>", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="</p>", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Cells.Replace What:="<br />", Replacement:="", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Application.ScreenUpdating = True
t1 = Timer
MsgBox "结束,用时:" & t1 - t0
End Sub
目录
相关文章
|
9月前
|
数据采集 Web App开发 JSON
浏览器插件:WebScraper基本用法和抓取页面内容(不会编程也能爬取数据)
本文以百度为实战案例演示使用WebScraper插件抓取页面内容保存到文件中。以及WebScraper用法【2月更文挑战第1天】
666 2
浏览器插件:WebScraper基本用法和抓取页面内容(不会编程也能爬取数据)
|
C# 移动开发 搜索推荐
c# 正则表达式对网页进行内容抓取
原文 c# 正则表达式对网页进行内容抓取 搜索引擎中一个比较重要的环节就是从网页中抽取出有效内容。简单来说,就是吧HTML文本中的HTML标记去掉,留下我们用IE等浏览器打开HTML文档看到的部分(我们这里不考虑图片).
946 0
小程序中打开网页和pdf
打开网页的方法有两种第一种是最简单的微信官方提供的方法,直接把要打开的网页地址赋给web-view标签的src属性 第二种需要引入一个第三方插件,下面的写法只适用于wepy框架中,其他框架中写法略有不同。
1565 0
|
Web App开发
在网页中打开展示pdf文件
在网页中打开展示pdf文件
829 0
|
7月前
|
数据采集 Web App开发 JavaScript
探索Puppeteer的强大功能:抓取隐藏内容
**摘要:** 本文探讨了如何使用Puppeteer无头浏览器抓取动态网页的隐藏内容,如模拟点击、滚动、表单提交和延时加载。Puppeteer是Google维护的Node库,能自动化控制Chrome。文章还讲解了结合爬虫代理IP、User-Agent和Cookie来增强爬取的稳定性和效率,提供了相关JavaScript代码示例,展示了如何配置代理、设置User-Agent、处理Cookie以及模拟用户交互来获取隐藏信息。这些技巧对于现代网页的爬取至关重要。
225 4
探索Puppeteer的强大功能:抓取隐藏内容
|
3月前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
2月前
|
数据采集 存储 供应链
数据合并:cbind函数在网页爬取中的实用技巧
本文介绍了如何通过代理IP和多线程技术提高网页爬取效率,并使用`cbind`函数合并数据。以财经网新闻为例,展示了从指定网站下载、解析内容,到数据获取、合并及分析的完整流程。通过亿牛云爬虫代理和Python代码实现,确保高效无痕访问,最终将结果保存为CSV文件。此方法适用于大量分散数据的爬取与处理,助力经济趋势分析。
137 47
|
4月前
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
260 0
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
Windows
网页代码总结
标点   标题     标题号"hx"   视频播放代码:  
704 0

热门文章

最新文章