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
目录
相关文章
|
6月前
|
数据采集 Web App开发 JSON
浏览器插件:WebScraper基本用法和抓取页面内容(不会编程也能爬取数据)
本文以百度为实战案例演示使用WebScraper插件抓取页面内容保存到文件中。以及WebScraper用法【2月更文挑战第1天】
434 2
浏览器插件:WebScraper基本用法和抓取页面内容(不会编程也能爬取数据)
|
6天前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
1月前
|
数据采集 Web App开发 JavaScript
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
本文介绍了如何使用Selenium爬虫技术抓取抖音评论,通过模拟鼠标悬停操作和结合代理IP、Cookie及User-Agent设置,有效应对动态内容加载和反爬机制。代码示例展示了具体实现步骤,帮助读者掌握这一实用技能。
Selenium爬虫技术:如何模拟鼠标悬停抓取动态内容
|
2月前
|
数据采集 JavaScript 前端开发
网页抓取进阶:如何提取复杂网页信息
在信息爆炸时代,从复杂网页中高效抓取数据对开发者和分析师至关重要。本文探讨如何利用 `webpage` 对象结合代理IP技术,轻松抓取如大众点评这类动态加载且具备反爬机制的网站数据。通过 Python 的 `requests`、`BeautifulSoup` 和 `Selenium`,结合代理IP,详细讲解了如何应对动态内容加载、反爬机制等问题,并提供了具体代码实现。通过这种方法,可以批量抓取商家信息,为数据分析提供支持。
157 1
网页抓取进阶:如何提取复杂网页信息
|
4月前
|
数据采集 Web App开发 JavaScript
探索Puppeteer的强大功能:抓取隐藏内容
**摘要:** 本文探讨了如何使用Puppeteer无头浏览器抓取动态网页的隐藏内容,如模拟点击、滚动、表单提交和延时加载。Puppeteer是Google维护的Node库,能自动化控制Chrome。文章还讲解了结合爬虫代理IP、User-Agent和Cookie来增强爬取的稳定性和效率,提供了相关JavaScript代码示例,展示了如何配置代理、设置User-Agent、处理Cookie以及模拟用户交互来获取隐藏信息。这些技巧对于现代网页的爬取至关重要。
150 4
探索Puppeteer的强大功能:抓取隐藏内容
|
3月前
|
数据采集 前端开发 测试技术
如何爬取瀑布流网页加载的内容
本文探讨了爬取瀑布流网页内容的策略。首先解析了其工作原理——通过Ajax请求动态加载数据,并介绍了利用浏览器开发者工具分析这些请求的方法。随后,文章讲解了如何使用Python模拟这些请求,处理动态加载的内容,并推荐了Selenium等自动化工具以简化流程。最后强调了在爬虫开发过程中需遵守网站规定及道德准则的重要性。
|
6月前
|
存储
如何解决网页中的pdf文件无法下载?pdf打印显示空白怎么办?
如何解决网页中的pdf文件无法下载?pdf打印显示空白怎么办?
842 0
|
Web App开发
谷歌 Chrome 浏览器内直接打开编辑保存 Word、Excel、PPT 文档,可离线部署!
谷歌 Chrome 经过开发团队不断优化,凭借运行界面简单,打开速度最快及扩展插件众多,Chrome 已经成为了世界上最受欢迎的浏览器。不过有一点非常可惜,由于微软 Office 不是开源程序,所以 Chrome 一直无法直接打开微软 Office 文档。
374 0
谷歌 Chrome 浏览器内直接打开编辑保存 Word、Excel、PPT 文档,可离线部署!
|
存储 搜索推荐 Android开发
一键网页视频提取神器!!!
一键网页视频提取神器!!!
|
Web App开发 SQL JSON
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
使用python获取浏览器收藏夹和历史浏览记录,然后可以...
686 0
使用python获取浏览器收藏夹和历史浏览记录,然后可以...