vba 网页数据抓取

vba 网页数据抓取

VBA中QueryTables提取股票历史交易信息

网站优化优采云 发表了文章 • 0 个评论 • 180 次浏览 • 2022-07-06 16:49 • 来自相关话题

  VBA中QueryTables提取股票历史交易信息
  【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题十:“利用QueryTables抓取网络数据”:VBA中QueryTables提取股票历史交易信息
  第三节 利用QueryTables提取某支股票历史交易信息数据大家好,这讲讲解的是利用QueryTables实现抓取网页数据的具体应用,在上一讲的讲解中,我们看到QueryTables方法利用起来代码确实是非常简单,实现的效果也是非常好的。这讲我们继续讲解这种方法的利用。这一讲我们将完成提取某支股票历史交易信息的数据。
  实用场景:利用QueryTables,抓取网易财经某支股票的历史交易数据,这里我选择的股票是紫金矿业,抓取2020年第2季度的数据,网易财经网址是:,股票在当今社会即是个人投资的方式,又是经济社会发展的晴雨表,关注的人都非常多,也希望在市场运作中能分析出一套可以用于自己投资理财的数据,但股票有风险,大家还是要小心谨慎,不要被表面的高利所诱惑,我这里只能提供给大家基础数据积累,不涉及股票操作。1 利用QueryTables提取某支股票历史交易信息数据的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先清空一下回填数据的区域,然后用QueryTables.Add方法,在网页上提取序号为4的表的数据即可。提取表数据的时候可以选择一下格式的填充。在利用Add方法进行连接的时候要将年和季节的参数给出,同时回填数据的区域选择A5单元格。为了验证一下网址,我们可以在工作表中的某个单元格中留存一下网址。以备核对。2 利用QueryTables提取某支股票历史交易信息数据的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZA() '获取网易财经股票的价格和信息 DimstrQuery As StringSheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents GPCode= Cells(1, 4).Value myN= Cells(2, 4).Value myJ= Cells(3, 4).Value strQuery= "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ Cells(1,"l") = strQuery WithActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5")) .Name= "history" .RefreshOnFileOpen= False .BackgroundQuery= True .SaveData= True .PreserveFormatting= True .AdjustColumnWidth= False .RefreshPeriod= 0 .WebSelectionType= xlSpecifiedTables .WebFormatting= xlWebFormattingNone .WebTables= "4" .RefreshBackgroundQuery:=False EndWith MsgBox("OK")End Sub
  
  代码的讲解:
  1) Sheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents以上代码清空数据的回填区域,注意第二句的写法。2)GPCode = Cells(1, 4).Value 取得股票的代码3) myN = Cells(2, 4).Value 取得要查询的年4) myJ = Cells(3, 4).Value 取得要查询的季节5)strQuery = "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ以上取得要连接的URL6) Cells(1, "l") = strQuery在工作表的单元格中备份网址以便核对。7)With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))上述代码指定加载网址, 的数据 ,Range("a5")是回填给工作表区域的左上角的单元格。8).Name = "history"
  9).RefreshOnFileOpen = False 如果每次打开工作簿时,数据表高速缓存或查询表自动更新,则为 True。 默认值为 False 。 读取/写入 Boolean。 10).BackgroundQuery = True 是否在后台异步执行,如果查询表的查询是异步执行(在后台执行)的,则为True。11) .SaveData = True 如果将Data数据随工作簿一起保存,则为 True。 如果仅保存数据透视表的定义,则为 False。 读取/写入 Boolean。12) .PreserveFormatting = True 如果将数据前五行的任何常用格式设置应用到查询表的新数据行,则为 True。 未使用的单元格未格式化。 如果将应用到查询表的最新一次自动套用格式应用于新数据行,则属性为 False。 默认值为 True。对于数据库查询表, 默认格式设置为xlSimple 常量。刷新查询表时,将对查询表应用新的自动套用格式样式。 只要 PreserveFormatting 的值为 False,则 AutoFormat(自动套用格式)就会被设置为 None。 因此, 在PreserveFormatting之前设置的任何自动套用格式设置为False , 并且在刷新查询表之前不会生效, 并且生成的查询表不会应用任何格式。
  13) .AdjustColumnWidth = False 如果每次刷新指定的查询表时列宽都会自动调整为最适合的宽度,则为True。 如果每次刷新时列宽不进行自动调整,则为 False。 默认值为 True 。14) .RefreshPeriod = 0 返回或设置两次刷新之间的时间间隔。 读/写 Long。将周期设置为 0(零),则会禁用自动定时刷新,并且等同于将该属性设置为 Null。RefreshPeriod 属性的值可以是从 0 到 32767 的整数。15) .WebSelectionType = xlSpecifiedTables 指定表16) .WebFormatting = xlWebFormattingNone 提取表的数据无格式17) .WebTables = "4" 选择序号为4的表18) .Refresh BackgroundQuery:=False 更新一个查询表数据。Updates an external data range in a QueryTable object.
  上面的各个属性给大家进行了详细的讲解,希望大家能了解。
  代码截图:
  通过上述的代码,就可以完成我们的思路。3 利用QueryTables提取某支股票历史交易信息数据的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。从代码到实现的过程,非常的简洁,代码理解也非常的容易,这给我们的学习和利用带来了方便。
  本节知识点回向:如何利用QueryTables对象各种属性的理解和掌握。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。 查看全部

  VBA中QueryTables提取股票历史交易信息
  【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题十:“利用QueryTables抓取网络数据”:VBA中QueryTables提取股票历史交易信息
  第三节 利用QueryTables提取某支股票历史交易信息数据大家好,这讲讲解的是利用QueryTables实现抓取网页数据的具体应用,在上一讲的讲解中,我们看到QueryTables方法利用起来代码确实是非常简单,实现的效果也是非常好的。这讲我们继续讲解这种方法的利用。这一讲我们将完成提取某支股票历史交易信息的数据。
  实用场景:利用QueryTables,抓取网易财经某支股票的历史交易数据,这里我选择的股票是紫金矿业,抓取2020年第2季度的数据,网易财经网址是:,股票在当今社会即是个人投资的方式,又是经济社会发展的晴雨表,关注的人都非常多,也希望在市场运作中能分析出一套可以用于自己投资理财的数据,但股票有风险,大家还是要小心谨慎,不要被表面的高利所诱惑,我这里只能提供给大家基础数据积累,不涉及股票操作。1 利用QueryTables提取某支股票历史交易信息数据的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先清空一下回填数据的区域,然后用QueryTables.Add方法,在网页上提取序号为4的表的数据即可。提取表数据的时候可以选择一下格式的填充。在利用Add方法进行连接的时候要将年和季节的参数给出,同时回填数据的区域选择A5单元格。为了验证一下网址,我们可以在工作表中的某个单元格中留存一下网址。以备核对。2 利用QueryTables提取某支股票历史交易信息数据的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZA() '获取网易财经股票的价格和信息 DimstrQuery As StringSheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents GPCode= Cells(1, 4).Value myN= Cells(2, 4).Value myJ= Cells(3, 4).Value strQuery= "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ Cells(1,"l") = strQuery WithActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5")) .Name= "history" .RefreshOnFileOpen= False .BackgroundQuery= True .SaveData= True .PreserveFormatting= True .AdjustColumnWidth= False .RefreshPeriod= 0 .WebSelectionType= xlSpecifiedTables .WebFormatting= xlWebFormattingNone .WebTables= "4" .RefreshBackgroundQuery:=False EndWith MsgBox("OK")End Sub
  
  代码的讲解:
  1) Sheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents以上代码清空数据的回填区域,注意第二句的写法。2)GPCode = Cells(1, 4).Value 取得股票的代码3) myN = Cells(2, 4).Value 取得要查询的年4) myJ = Cells(3, 4).Value 取得要查询的季节5)strQuery = "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ以上取得要连接的URL6) Cells(1, "l") = strQuery在工作表的单元格中备份网址以便核对。7)With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))上述代码指定加载网址, 的数据 ,Range("a5")是回填给工作表区域的左上角的单元格。8).Name = "history"
  9).RefreshOnFileOpen = False 如果每次打开工作簿时,数据表高速缓存或查询表自动更新,则为 True。 默认值为 False 。 读取/写入 Boolean。 10).BackgroundQuery = True 是否在后台异步执行,如果查询表的查询是异步执行(在后台执行)的,则为True。11) .SaveData = True 如果将Data数据随工作簿一起保存,则为 True。 如果仅保存数据透视表的定义,则为 False。 读取/写入 Boolean。12) .PreserveFormatting = True 如果将数据前五行的任何常用格式设置应用到查询表的新数据行,则为 True。 未使用的单元格未格式化。 如果将应用到查询表的最新一次自动套用格式应用于新数据行,则属性为 False。 默认值为 True。对于数据库查询表, 默认格式设置为xlSimple 常量。刷新查询表时,将对查询表应用新的自动套用格式样式。 只要 PreserveFormatting 的值为 False,则 AutoFormat(自动套用格式)就会被设置为 None。 因此, 在PreserveFormatting之前设置的任何自动套用格式设置为False , 并且在刷新查询表之前不会生效, 并且生成的查询表不会应用任何格式。
  13) .AdjustColumnWidth = False 如果每次刷新指定的查询表时列宽都会自动调整为最适合的宽度,则为True。 如果每次刷新时列宽不进行自动调整,则为 False。 默认值为 True 。14) .RefreshPeriod = 0 返回或设置两次刷新之间的时间间隔。 读/写 Long。将周期设置为 0(零),则会禁用自动定时刷新,并且等同于将该属性设置为 Null。RefreshPeriod 属性的值可以是从 0 到 32767 的整数。15) .WebSelectionType = xlSpecifiedTables 指定表16) .WebFormatting = xlWebFormattingNone 提取表的数据无格式17) .WebTables = "4" 选择序号为4的表18) .Refresh BackgroundQuery:=False 更新一个查询表数据。Updates an external data range in a QueryTable object.
  上面的各个属性给大家进行了详细的讲解,希望大家能了解。
  代码截图:
  通过上述的代码,就可以完成我们的思路。3 利用QueryTables提取某支股票历史交易信息数据的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。从代码到实现的过程,非常的简洁,代码理解也非常的容易,这给我们的学习和利用带来了方便。
  本节知识点回向:如何利用QueryTables对象各种属性的理解和掌握。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。

VBA抓取解禁股票信息

网站优化优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-06-02 13:05 • 来自相关话题

  VBA抓取解禁股票信息
  【分享成果,随喜正能量】为什么会觉得委屈?因为你只记住了自己的好,还记住了别人的不好。凡事,把对方摆在和你一样的位置,只会让彼此的心灵越来越远,何不多一些宽容,让一些琐碎和怨恨远离我们,让我们的心胸更加开阔。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:VBA抓取解禁股票信息
  
  第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。
  实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。
  2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")
  End Sub
  代码的讲解:
  1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。
  代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  
  
  
  【分享成果,随喜正能量】人生起起落落是常态,谁都会遇到不尽人意的时候,坦然接受所有的不幸,不颓废、不放弃、不抱怨,生活的转机就在前方。。 查看全部

  VBA抓取解禁股票信息
  【分享成果,随喜正能量】为什么会觉得委屈?因为你只记住了自己的好,还记住了别人的不好。凡事,把对方摆在和你一样的位置,只会让彼此的心灵越来越远,何不多一些宽容,让一些琐碎和怨恨远离我们,让我们的心胸更加开阔。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:VBA抓取解禁股票信息
  
  第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。
  实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。
  2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")
  End Sub
  代码的讲解:
  1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。
  代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  
  
  
  【分享成果,随喜正能量】人生起起落落是常态,谁都会遇到不尽人意的时候,坦然接受所有的不幸,不颓废、不放弃、不抱怨,生活的转机就在前方。。

VBA网页爬虫和多线程指南

网站优化优采云 发表了文章 • 0 个评论 • 97 次浏览 • 2022-05-07 20:45 • 来自相关话题

  VBA网页爬虫和多线程指南
  优点是速度快,灵活,可以实现GET、POST、Header、Cookie等诸多细节。缺点是比Webbrowser麻烦一点,调试不直观。为了方便引用网页中的信息,不妨把XMLhttp的responsetext装进一个HTMLfile对象,就可以像Webbrowser一样检索了。
  2. 解决登录问题
  用Click模拟登录比把用户名、密码写在url里或者send请求来的简单,通用性也更好。尤其是有些网站的表单submit时要执行额外的script,或者登录时要跨域发送登录信息。
  如果遇到跨域登录或者iframe的情况,参照所附代码最后一段:Click之后等待最终的登录返回页面,而不是等待登录页加载完毕。
  如果使用XMLhttp发送登录请求遇到登录问题,建议就不要费力气琢磨什么伪造Cookie了,使用Webbrowser来登录吧,登录后同一个Excel进程里的所有XMLhttp和Webbrowser都会共享到这个登录信息,特别省心。
  使用Set oIE = CreateObject("internetexplorer.application")不能和Webbrowser以及XMLhttp互相共享登录信息,Winhttp似乎也不能。
  3. 利用异步加快速度
  一个一个等待网页返回太慢,所以我们不用同步方式send一个等待一个,而是用异步,一次send一批请求出去,统一等待。初衷当然很好,然而VBA不支持多线程,所以这里的速度提高比较有限,一次发送20个请求大概只能提速2倍。再多似乎没什么用了。nThread值的选择在很大程度上于所爬网站的速度,建议多次测试决定。
  4. 看似不可能的多线程实现
  也许有很多人跟你说过VBA不支持多线程。没错,它确实不支持,用API极其麻烦而且不稳定。但是,Windows操作系统支持多线程,我们就利用这一点来绕开VBA的限制。不光有办法,而且有三种。
  4.1 利用VBScript加Application
  将含有宏的工作簿另存n份,生成n个VBScript脚本文件,每个脚本用Excel.Application对象打开一个工作簿,运行每个工作簿里的VBA爬虫,将爬到的结果统一写回主Excel里。这种方式有两个好处:一是用字符串的VBScript代码比较简洁,二是每个线程都可以利用Webbrowser控件方便地登录。缺点就是打开一批Excel导致系统负担较重。searchWorker过程里创建了一个Excel对象,通过工作簿名称workbookName将爬到的数据写回原工作簿。
  4.2 只用VBScript实现多线程
  有了上一节的示例,很容易就可以构造出合适的VBScript文件,并且在文件里直接抓取数据,代码我就不放了。比起VBScript加Application的方法,只用VBScript拼字符串写起来更麻烦,但程序执行起来非常轻量级,所以如果你要抓取的网站没有复杂的登录过程,又不怕代码麻烦,那么可以考虑用VBScript。示例可以在Excelhero找到,代码相当乱而且长。
  4.3 使用ActiveX EXE实现多线程
  这个有前人写过,优点是资源消耗适中,缺点是需要有Visual Basic环境,实现起来也更复杂,可在excelhome找到。
  5. 总结
  我个人推荐VBScript加Application的多线程方案,通用性更强,而且现在的电脑已经不太在乎多占些内存了。比起本文前面使用XMLhttp批量异步发送的方法,VBS+Application的方案创建8个线程可以提速5倍左右,效率很高。测试电脑是4核心8线程的i7台式机,8G内存。爬虫网抓时,每个WPS ET线程大概占用不到100M内存,机器完全可以承受。
  做爬虫可能会遇到很多问题,比如翻页、动态网页、json解析、保存附件等等。有时为了避免被网站封杀,还要加上一些延时。具体问题只能在抓取过程中各个击破。祝各位好运。
  以上。
  搞定搞不定的老狼 查看全部

  VBA网页爬虫和多线程指南
  优点是速度快,灵活,可以实现GET、POST、Header、Cookie等诸多细节。缺点是比Webbrowser麻烦一点,调试不直观。为了方便引用网页中的信息,不妨把XMLhttp的responsetext装进一个HTMLfile对象,就可以像Webbrowser一样检索了。
  2. 解决登录问题
  用Click模拟登录比把用户名、密码写在url里或者send请求来的简单,通用性也更好。尤其是有些网站的表单submit时要执行额外的script,或者登录时要跨域发送登录信息。
  如果遇到跨域登录或者iframe的情况,参照所附代码最后一段:Click之后等待最终的登录返回页面,而不是等待登录页加载完毕。
  如果使用XMLhttp发送登录请求遇到登录问题,建议就不要费力气琢磨什么伪造Cookie了,使用Webbrowser来登录吧,登录后同一个Excel进程里的所有XMLhttp和Webbrowser都会共享到这个登录信息,特别省心。
  使用Set oIE = CreateObject("internetexplorer.application")不能和Webbrowser以及XMLhttp互相共享登录信息,Winhttp似乎也不能。
  3. 利用异步加快速度
  一个一个等待网页返回太慢,所以我们不用同步方式send一个等待一个,而是用异步,一次send一批请求出去,统一等待。初衷当然很好,然而VBA不支持多线程,所以这里的速度提高比较有限,一次发送20个请求大概只能提速2倍。再多似乎没什么用了。nThread值的选择在很大程度上于所爬网站的速度,建议多次测试决定。
  4. 看似不可能的多线程实现
  也许有很多人跟你说过VBA不支持多线程。没错,它确实不支持,用API极其麻烦而且不稳定。但是,Windows操作系统支持多线程,我们就利用这一点来绕开VBA的限制。不光有办法,而且有三种。
  4.1 利用VBScript加Application
  将含有宏的工作簿另存n份,生成n个VBScript脚本文件,每个脚本用Excel.Application对象打开一个工作簿,运行每个工作簿里的VBA爬虫,将爬到的结果统一写回主Excel里。这种方式有两个好处:一是用字符串的VBScript代码比较简洁,二是每个线程都可以利用Webbrowser控件方便地登录。缺点就是打开一批Excel导致系统负担较重。searchWorker过程里创建了一个Excel对象,通过工作簿名称workbookName将爬到的数据写回原工作簿。
  4.2 只用VBScript实现多线程
  有了上一节的示例,很容易就可以构造出合适的VBScript文件,并且在文件里直接抓取数据,代码我就不放了。比起VBScript加Application的方法,只用VBScript拼字符串写起来更麻烦,但程序执行起来非常轻量级,所以如果你要抓取的网站没有复杂的登录过程,又不怕代码麻烦,那么可以考虑用VBScript。示例可以在Excelhero找到,代码相当乱而且长。
  4.3 使用ActiveX EXE实现多线程
  这个有前人写过,优点是资源消耗适中,缺点是需要有Visual Basic环境,实现起来也更复杂,可在excelhome找到。
  5. 总结
  我个人推荐VBScript加Application的多线程方案,通用性更强,而且现在的电脑已经不太在乎多占些内存了。比起本文前面使用XMLhttp批量异步发送的方法,VBS+Application的方案创建8个线程可以提速5倍左右,效率很高。测试电脑是4核心8线程的i7台式机,8G内存。爬虫网抓时,每个WPS ET线程大概占用不到100M内存,机器完全可以承受。
  做爬虫可能会遇到很多问题,比如翻页、动态网页、json解析、保存附件等等。有时为了避免被网站封杀,还要加上一些延时。具体问题只能在抓取过程中各个击破。祝各位好运。
  以上。
  搞定搞不定的老狼

VBA利用IE,抓取解禁股票数据

网站优化优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2022-05-04 09:00 • 来自相关话题

  VBA利用IE,抓取解禁股票数据
  大家好,我们今日讲解“VBA信息获取与处理”教程中第九个专题“利用IE抓取网络数据”的第三节“利用IE,抓取解禁股票数据”,这个专题是非常有用的知识点,希望大家掌握。第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")End Sub
  代码的讲解:1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  积木编程的思路内涵:在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。2 建立自己的“积木库”。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。
  
  VBA的应用界定VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程:第一套:VBA代码解决方案是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,初学必备;第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程的视频讲解,听元音更易接受。第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。第六套教程:《VBA信息获取与处理》,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。大家可以根据以上资料1→3→2→6→5或者是4→3→2→6→5的顺序逐渐深入的逐渐学习。教程提供讲解的同时提供了大量的积木,如需要可以WeChat: NZ9668
  
  学习VBA是个过程,也需要经历一种枯燥的感觉如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
  浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭。多少VBA人,暗夜中,悄声寻梦,盼却天明。怎无凭!
  回向学习利用VBA的历历往事,不胜感慨,谨以这些文字给大家,分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。 查看全部

  VBA利用IE,抓取解禁股票数据
  大家好,我们今日讲解“VBA信息获取与处理”教程中第九个专题“利用IE抓取网络数据”的第三节“利用IE,抓取解禁股票数据”,这个专题是非常有用的知识点,希望大家掌握。第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")End Sub
  代码的讲解:1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  积木编程的思路内涵:在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。2 建立自己的“积木库”。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。
  
  VBA的应用界定VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程:第一套:VBA代码解决方案是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,初学必备;第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程的视频讲解,听元音更易接受。第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。第六套教程:《VBA信息获取与处理》,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。大家可以根据以上资料1→3→2→6→5或者是4→3→2→6→5的顺序逐渐深入的逐渐学习。教程提供讲解的同时提供了大量的积木,如需要可以WeChat: NZ9668
  
  学习VBA是个过程,也需要经历一种枯燥的感觉如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
  浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭。多少VBA人,暗夜中,悄声寻梦,盼却天明。怎无凭!
  回向学习利用VBA的历历往事,不胜感慨,谨以这些文字给大家,分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。

Excel抓取网页表格数据-无需编程实现

网站优化优采云 发表了文章 • 0 个评论 • 352 次浏览 • 2022-05-04 08:30 • 来自相关话题

  Excel抓取网页表格数据-无需编程实现
  当今社会,是一个越来越追求数据更新的社会,互联网的兴起,数据大爆炸,几乎每个行业都要分析大量的数据来作为各种决策的基础,所以,谁掌握的数据多、获取实时数据更快,就可能成为人生赢家。这也是有越来越多的工程师从事网络爬虫抓取数据工作的原因。
  当然,网络爬虫本身需要有一定的编程与算法基础,好的代码要花费大量的人力和时间来完成,这使得很多需要数据又不会相关知识的同学对此望而却步。
  其实,Excel从2007版本开始,针对一些网页数据可以不用编程就能实现数据的自动抓取与定时刷新功能,是不是很cool?
  由于不需要用户写代码,所以,功能实现必然有一些限制,下面是我个人总结的,仅供参考:
  下面我们通过举例来讲解如何操作。比如找到一个为数不多以表格方式而非纯动态刷新的股票网站:,对其前20个股票数据进行定时刷新。
  打开Excel,找到“数据”->“获取外部数据”->”自网站”;
  
  会弹出一个名为“新建Web查询”类似简易浏览器的界面,其中,excel对于网址的输入长度是有限制的,太长了会打开失败,本次输入()没有问题;
  
  在“新建Web查询”界面点击“转到”,即可打开网页;
  
  在页面里面Excel会尝试将表格数据以符号进行标注,找到所需要的表格,对应点选后,会变成对勾,然后点击“导入”按钮;
  
  会弹出“导入数据”的对话框,以选择数据存放的开始位置,在这里按照默认位置“A1”不变,直接点击“确定”;
  
  此时在“A1”单元格中会显示:“:正在获取数据”字样,说明Excel正在从网站同步数据;
  
  稍过一会,就能看到网站中的表格数据被抓取到Excel表格中;
  
  7. Excel抓取网页表格数据的功能并不仅限于此,还可以打开自动刷新功能,并选择自动刷新数据的时间(以分钟为单位),以及打开Excel表时是否马上刷新数据,设置方法在“数据”功能区中的“连接”操作区,如下图:
  
  
  通过上面的操作,基本完成了在Excel中抓取网页表格数据的功能,方法可以适用于各种常规表格形式的网页数据获取,比如在IT中非常常用的Bugzilla,或者做市场经常需要的汇率查询。
  下面应好友要求,给出一个抓取美元对人民币汇率的gif案例,设定60分钟刷新一次数据,选用的网址是:。
  
  本次分享就结束了,希望对大家有帮助,谢谢观赏! 查看全部

  Excel抓取网页表格数据-无需编程实现
  当今社会,是一个越来越追求数据更新的社会,互联网的兴起,数据大爆炸,几乎每个行业都要分析大量的数据来作为各种决策的基础,所以,谁掌握的数据多、获取实时数据更快,就可能成为人生赢家。这也是有越来越多的工程师从事网络爬虫抓取数据工作的原因。
  当然,网络爬虫本身需要有一定的编程与算法基础,好的代码要花费大量的人力和时间来完成,这使得很多需要数据又不会相关知识的同学对此望而却步。
  其实,Excel从2007版本开始,针对一些网页数据可以不用编程就能实现数据的自动抓取与定时刷新功能,是不是很cool?
  由于不需要用户写代码,所以,功能实现必然有一些限制,下面是我个人总结的,仅供参考:
  下面我们通过举例来讲解如何操作。比如找到一个为数不多以表格方式而非纯动态刷新的股票网站:,对其前20个股票数据进行定时刷新。
  打开Excel,找到“数据”->“获取外部数据”->”自网站”;
  
  会弹出一个名为“新建Web查询”类似简易浏览器的界面,其中,excel对于网址的输入长度是有限制的,太长了会打开失败,本次输入()没有问题;
  
  在“新建Web查询”界面点击“转到”,即可打开网页;
  
  在页面里面Excel会尝试将表格数据以符号进行标注,找到所需要的表格,对应点选后,会变成对勾,然后点击“导入”按钮;
  
  会弹出“导入数据”的对话框,以选择数据存放的开始位置,在这里按照默认位置“A1”不变,直接点击“确定”;
  
  此时在“A1”单元格中会显示:“:正在获取数据”字样,说明Excel正在从网站同步数据;
  
  稍过一会,就能看到网站中的表格数据被抓取到Excel表格中;
  
  7. Excel抓取网页表格数据的功能并不仅限于此,还可以打开自动刷新功能,并选择自动刷新数据的时间(以分钟为单位),以及打开Excel表时是否马上刷新数据,设置方法在“数据”功能区中的“连接”操作区,如下图:
  
  
  通过上面的操作,基本完成了在Excel中抓取网页表格数据的功能,方法可以适用于各种常规表格形式的网页数据获取,比如在IT中非常常用的Bugzilla,或者做市场经常需要的汇率查询。
  下面应好友要求,给出一个抓取美元对人民币汇率的gif案例,设定60分钟刷新一次数据,选用的网址是:。
  
  本次分享就结束了,希望对大家有帮助,谢谢观赏!

你会用Excel函数实现网页数据抓取吗?

网站优化优采云 发表了文章 • 0 个评论 • 90 次浏览 • 2022-05-04 08:28 • 来自相关话题

  你会用Excel函数实现网页数据抓取吗?
  NO.139-网页函数的小应用
  作者:看见星光微博:EXCELers / 知识星球:Excel
  HI~大家好,我是星光。话说……话不知道从何说起,那就从互联网开扯吧……话说随着互联网的高速发展,网页数据愈发成为数据分析过程中最重要的数据来源之一……也许正是基于这样的考量,从2013版开始,Excel新增了一个名为Web的函数类别,使用该类别的函数,咱们可以通过网页从Web服务器获取数据,比如股票信息、天气查询、有道翻译、男女情缘等等。
  打个响指,高大上的开场白结束了,下面举个小栗子。
  
  如上图所示,在B2单元格输入以下公式,可以将A2单元格的值进行英汉或汉英互译▼
  =FILTERXML(WEBSERVICE(";i="&A2&"&doctype=xml"),"//translation")
  公式看起来很长,这主要是因为网址长度偏长的缘故,实际上该公式的结构非常简单。
  看我手指,歪、涂、斯瑞,它主要有3部分构成。
  第1部分构建网址。
  ";i="&A2&"&doctype=xml"
  这是有道在线翻译的网页地址,包含了关键的参数部分,i="&A2是需要翻译的词汇,doctype=xml是返回文件的类型,是xml。只所以返回xml是因为FILTERXML函数可以获取XML结构化内容中的信息。第2部分读取网址
  WEBSERVICE函数可以通过指定的网页地址从Web服务器获取数据(需要计算机联网状态)
  本例中,B2公式▼
  =WEBSERVICE(";i="&A2&"&doctype=xml&version")
  获取数据如下
  "
  第3部分获取目标数据
  这里使用了FILTERXML函数,FILTERXML函数语法如下▼
  FILTERXML(xml,xpath)
  该函数共有两个参数,xml参数是有效的xml格式文本,xpath参数是需要查询的目标数据在xml中的标准路径。
  通过第2部分获取的xml文件内容,我们可以很直接的看到看见星光的翻译结果See the stars处于translation路径下(第6至第8行代码),因此第2参数设为//translation。
  ……
  OK,这就是今天和大家分享的内容,感兴趣的小伙伴可以尝试使用web函数从百度天气预报获取家乡城市的天气信息~
  由于FILTERXML可以从XML格式文本中获取数据,因此当XML文本是由我们刻意搭建产生的字符串时,就会有很多奇妙的用法,比如用该函数实现VBA编程Split函数的效果,关于这一点,咱们以后有缘再聊。
  ▎全方位系统学习Excel
  推荐加入我的付费Excel社群 ▎
  点击图片可获取相关推文..▼
   查看全部

  你会用Excel函数实现网页数据抓取吗?
  NO.139-网页函数的小应用
  作者:看见星光微博:EXCELers / 知识星球:Excel
  HI~大家好,我是星光。话说……话不知道从何说起,那就从互联网开扯吧……话说随着互联网的高速发展,网页数据愈发成为数据分析过程中最重要的数据来源之一……也许正是基于这样的考量,从2013版开始,Excel新增了一个名为Web的函数类别,使用该类别的函数,咱们可以通过网页从Web服务器获取数据,比如股票信息、天气查询、有道翻译、男女情缘等等。
  打个响指,高大上的开场白结束了,下面举个小栗子。
  
  如上图所示,在B2单元格输入以下公式,可以将A2单元格的值进行英汉或汉英互译▼
  =FILTERXML(WEBSERVICE(";i="&A2&"&doctype=xml"),"//translation")
  公式看起来很长,这主要是因为网址长度偏长的缘故,实际上该公式的结构非常简单。
  看我手指,歪、涂、斯瑞,它主要有3部分构成。
  第1部分构建网址。
  ";i="&A2&"&doctype=xml"
  这是有道在线翻译的网页地址,包含了关键的参数部分,i="&A2是需要翻译的词汇,doctype=xml是返回文件的类型,是xml。只所以返回xml是因为FILTERXML函数可以获取XML结构化内容中的信息。第2部分读取网址
  WEBSERVICE函数可以通过指定的网页地址从Web服务器获取数据(需要计算机联网状态)
  本例中,B2公式▼
  =WEBSERVICE(";i="&A2&"&doctype=xml&version")
  获取数据如下
  "
  第3部分获取目标数据
  这里使用了FILTERXML函数,FILTERXML函数语法如下▼
  FILTERXML(xml,xpath)
  该函数共有两个参数,xml参数是有效的xml格式文本,xpath参数是需要查询的目标数据在xml中的标准路径。
  通过第2部分获取的xml文件内容,我们可以很直接的看到看见星光的翻译结果See the stars处于translation路径下(第6至第8行代码),因此第2参数设为//translation。
  ……
  OK,这就是今天和大家分享的内容,感兴趣的小伙伴可以尝试使用web函数从百度天气预报获取家乡城市的天气信息~
  由于FILTERXML可以从XML格式文本中获取数据,因此当XML文本是由我们刻意搭建产生的字符串时,就会有很多奇妙的用法,比如用该函数实现VBA编程Split函数的效果,关于这一点,咱们以后有缘再聊。
  ▎全方位系统学习Excel
  推荐加入我的付费Excel社群 ▎
  点击图片可获取相关推文..▼
  

vba 网页数据抓取(【10周入门系列文章】第二大问题——数据分析工具)

网站优化优采云 发表了文章 • 0 个评论 • 102 次浏览 • 2022-04-14 15:13 • 来自相关话题

  vba 网页数据抓取(【10周入门系列文章】第二大问题——数据分析工具)
  数据分析中存在三个主要问题:
  关于第一个问题,看过我公众号“10周入门系列文章”的同学应该有一个大概的了解。
  今天,我们来说说第二个大问题——数据分析工具!
  对于数据分析,我一直强调核心是业务,业务的分析逻辑映射到数据分析的处理逻辑,数据分析工具是帮助我们取得成果的手段。
  但是,你说工具不重要,它们很重要,就像什么样的路选择什么样的交通工具,合适的工具可以帮助我们更快地到达目的地。对应数据分析的不同方面,应该选择不同的工具,甚至更容易使用。
  今天的文章 文章 是针对扫盲工具的。
  PS:估计网上没有比这个更全面的了 一、 从工具属性和分析师需求上分
  在企业中,数据分析师通常分为业务和技术两大类。两者的能力和工作内容有很大不同,对工具的要求也不同。
  商业或技术
  业务分析师往往在运营部、市场部、销售部等,根据所服务的业务部门的不同,可能会被称为数据运营、业务分析、会员分析、业务分析师等名称。之所以会出现这种差异,是因为各个业务线所考虑的具体问题不同,分析思路和系统也不同。日常工作更多是整理业务报表,针对具体业务做专题分析,对围绕业务增长需要用到的数据做计算、规划、规划。
  技术分析师,通常在 IT 部门和数据中心。根据工作环节不同,分为数据库工程师、ETL工程师、爬虫工程师、算法工程师等角色。在中小型企业中,通常由技术兄弟负责所有这些流程。在大型企业中,一个标准的数据中心一般都有数据仓库、专题分析、建模分析等小组来完成数据开发工作,无论公司多大,也有专门的数据治理小组。这种区别的原因是需要一个多层次的复杂数据系统来产生数据。一个数据系统需要数据采集、数据集成、数据库管理、数据算法开发和报表设计的组合。这样,可以将散落在各处的数据采集起来,计算成常用指标,并以各种炫酷的图表展示。这里的每一个环节都需要相应的技术支持和人员工作,所以有不同的岗位。
  PS:在找数据分析职位的时候,一定要分清是技术还是业务,是否符合你的专业定位。
  分析师分为技术和业务,相应的工具也有这样的属性。
  分析工具
  对于初级数据分析师来说,玩Excel是必须的,数据透视表和公式的使用一定要精通,VBA是加分项。此外,有必要学习一个统计分析工具。SPSS 是一个很好的切入点。
  对于高级数据分析师来说,使用分析工具是一项核心能力。VBA基本必备,SPSS/SAS/R至少要精通其中一种。其他分析工具(如 Matlab)视情况而定。
  对于数据挖掘工程师……嗯,R 和 Python 是必须的,你必须编写代码来解决它。
  代码工具
  对于初级数据分析师,可以写SQL查询,有需要的可以写Hadoop和Hive查询,基本没问题。
  对于高级数据分析师来说,除了 SQL 之外,还需要学习 Python,使用 Python 可以更轻松地获取和处理数据。当然其他编程语言也是可以的。
  对于数据挖掘工程师来说,Hadoop一定要熟悉,Python/Java/C++至少要熟悉一个,Shell一定会用……总之,编程语言绝对是数据挖掘工程师的核心能力。
  一张图来说明问题:
  
  二、从企业数据应用架构划分
  工具的使用还取决于企业的需求和环境。为什么小企业雇佣数据分析师用 Excel 做报告,而大公司雇佣数据分析师玩 Python 和 R?这取决于企业的数据架构。
  从 IT 的角度来看,数据工具在实际应用中可以分为两个维度:
  第一维度:数据存储层-数据报告层-数据分析层-数据表现层
  第二维度:用户级-部门级-企业级-BI级
  1、数据存储层
  从数据存储设计到数据库概念和数据库语言,这方面不必深入研究,毕竟有专业的DBA。但至少了解数据是如何存储的,数据的基本结构和数据类型。SQL查询语言必不可少,精通才是最好的。可以从常见的select查询、update修改、delete删除、insert插入的基本结构和阅读入手。
  Access是最基本的个人数据库,常用于个人或一些基础数据的存储;MySQL 数据库,这是部门级或 Internet 数据库应用程序所必需的。这时,关键是掌握数据库结构和SQL语言数据查询能力。SQL Server 2005或之后的版本,对于中小型企业来说,一些大型企业也可以使用SQL Server数据库,其实此时除了数据存储,还包括数据报表和数据分析。
  DB2和Oracle数据库都是大型数据库,主要是企业级,特别是大型企业或者需要海量数据存储的企业。一般来说,大型数据库公司提供非常好的数据集成应用平台。
  BI级别,其实这不是数据库,而是基于之前数据库的企业级应用的数据仓库。Data Warehouse,建立在DW机器上的数据存储,基本上是一个集各种数据分析、报表、分析、呈现为一体的商业智能平台。
  2、报表/BI层
  企业存储需要读取和展示的数据,报表工具是最常用的工具,尤其是在中国。过去,传统报表大多解决了呈现的问题,但现在衍生出一些分析报表工具,也会与其他应用交叉,制作数据分析报表。涵盖早期商业智能的功能。
  Tableau、PowerBI、FineBI 和 Qlikview 等 BI(商业智能)工具涵盖了多层报告、数据分析和可视化。底层也可以连接数据仓库,构建OLAP分析模型。
  3、数据分析层
  其实这一层有很多分析工具,当然最常用的就是Excel了。
  Excel软件,首先,版本越高越好用。当然,对于excel,很多人只掌握了Excel 5%的功能。Excel的功能非常强大,甚至可以完成所有的统计分析工作!但我也常说,有能力把Excel当作统计工具玩,比专攻统计软件要好。
  SPSS软件:当前版本为18,名称也已更改为PASW Statistics;我是从3.0开始在Dos环境下编程分析的,目前版本的变化也可以看到SPSS社会科学统计包的变化,从Emphasis on Medicine、Chemical等开始多加和更加重视业务分析,现在它已经成为预测分析软件。
  SAS软件:SAS其实比SPSS更强大。SAS平台化,集成EM挖矿模块平台。相对来说,SAS 比较难学,但是如果你掌握了 SAS 会更有价值,比如离散选择模型、抽样问题、正交实验设计等等还是 SAS 更好用,另外 SAS 还有更多学习资料。
  其他还有 Python 和 R,后面会详细讨论。
  4、表示层
  表示层也称为数据可视化,上面几乎每个工具都提供了一点表示。但是,最常用的企业级应用程序是 BI,用于分析和报告。
  
  PS:需要注意的是,这个分类不区分软件,只是想说明软件的应用。有时我们用数据库做报表分析,有时报表就是分析,有时分析就是呈现;当然,有时候呈现就是分析,分析也是报表,报表就是数据存储!三、4大工具盘点
  以上就啰嗦了这么多,下面详细说说Excel、R、Python、BI。
  >>>>Excel
  适用场景:
  1.一般办公需求的数据处理;
  2.中小企业数据管理和存储(很多国企使用);
  3.在校学生、教师做简单的统计分析(如方差分析、回归分析);
  4.结合Word和PowerPoint制作数据分析报告;
  5.数据分析师的主要分析工具(数据分析师的一些辅助工具);
  6.部分商业杂志、报纸图表制作(数据可视化);
  优势:
  1.容易上手;
  2.学习资源非常丰富;
  3.你可以用Excel、建模、可视化、报告、动态图表做很多事情;
  4.帮助你在学习其他工具(如Python、R)之前了解很多操作的含义;
  缺点:
  1.深入学习需要掌握VBA,还是很困难的;
  2.数据量大时会卡住;
  3.到Excel 2016,不借助其他工具,Excel数据文件本身只能容纳108万行数据,不适合处理大规模数据集;
  4.内置统计分析的种类过于简单,实用价值不大;
  5.不同于Python、R语言等开源软件,正版Excel是需要付费的,比如我用office365.一年要300多块钱(但很值得)
  >>>>R
  使用场景:
  借助扩展的第三方 R 包,R 几乎可以做任何需要数据的事情。就我们一般的数据分析或学术数据分析工作而言,R能做的包括但不限于以下几点:
  1.数据清洗和排序;
  2.网络爬虫;
  3.数据可视化;
  4.统计假设检验(t检验、ANOVA、卡方检验等);
  5.统计建模(线性回归、逻辑回归、树模型、神经网络等);
  6.数据分析报告输出(Rmarkdown);
  R 容易学吗?
  从我个人的角度来看,R入门是非常容易的。经过10天的强化学习,掌握R的基本使用、基本数据结构、数据导入导出、简单的数据可视化是绝对没有问题的. 有了这些基础,在遇到实际问题时,可以找到自己需要使用的R包,阅读R的帮助文档,以及网上的资料,可以比较快速的解决具体问题。
  >>>>蟒蛇
  R语言和Python都是需要编程的数据分析工具。不同的是,R专门用于数据分析领域,而科学计算和数据分析只是Python的一个应用分支。Python还可以用于开发网页和游戏。,做系统的后端开发和运维。
  现在的一个趋势是Python在数据分析领域正在赶超R,并且在某些方面已经超越了R,比如机器学习、文本挖掘等部分编程领域,但是R语言在数据分析领域仍然保持着优势。部分统计。Python在数据分析方面的发展在很多地方借鉴了R语言的一些特性。所以,如果你还是一片空白,还没有开始学习,又想决定学R还是Python,建议从Python入手。
  Python和R都比较容易学,但是如果同时学,很容易混淆,因为很多地方都非常相似,所以不建议同时学。等你掌握其中一个到一定程度,再开始学习另一个。
  Python 能做什么?
  1.网络数据爬取,使用Python可以轻松编写强大的爬虫爬取网络数据;
  2.数据清洗;
  3.数据建模;
  4.根据业务场景和实际问题构建数据分析算法;
  5.数据可视化(个人感觉不如R好用);
  6.机器学习、文本挖掘等高级数据挖掘分析领域;
  我应该学习 R 还是 Python?
  如果因为时间有限只能选择其中之一学习,我推荐使用 Python。但我仍然建议了解两者,毕竟每个人都不一样。你可能在一些地方听说过,Python在工作中比较常用,但在工作中,解决问题才是最重要的。如果能用R高效解决问题,就用R吧。其实Python的很多数据分析特性都是模仿R实现的,比如pandas数据框,正在开发的ggplot可视化包模仿了R语言中非常有名的ggplot< @2.
  >>>>BI
  大多数分析师的日常工作是做报告,而数据分析师使用的报告较多的是BI。
  BI代表商业智能。在传统企业中,它是一整套解决方案。有效整合企业数据,快速生成决策报表。涉及数据仓库、ETL、OLAP、权限控制等模块。
  BI 工具有两个主要目的。一种是使用 BI 制作自动化报告。数据工作每天都涉及大量的数据,需要整理汇总,工作量很大。这部分工作可以交给BI自动化来完成,从数据正则化、建模到下载。
  另一种是利用其可视化功能进行分析。BI的优点是提供了比Excel更丰富的可视化功能,操作简单,美观。如果你每天需要两个小时的绘图时间,BI 会缩短一半的时间。
  BI作为企业级应用,可用于连接公司数据库,实现企业级报表的制作。本篇涉及数据架构,不再深入讨论。
  关于BI,Tableau、PowerBI、FineBI、Qlikview等BI(商业智能)工具覆盖了报表、数据分析、可视化等多个层面。底层也可以连接数据仓库,构建OLAP分析模型。
  就个人而言,为了快速启动数据分析和培养早期数据思维,BI工具无疑是最容易使用的。下一篇文章将教你如何搭建BI分析平台,学习操作BI工具! 查看全部

  vba 网页数据抓取(【10周入门系列文章】第二大问题——数据分析工具)
  数据分析中存在三个主要问题:
  关于第一个问题,看过我公众号“10周入门系列文章”的同学应该有一个大概的了解。
  今天,我们来说说第二个大问题——数据分析工具!
  对于数据分析,我一直强调核心是业务,业务的分析逻辑映射到数据分析的处理逻辑,数据分析工具是帮助我们取得成果的手段。
  但是,你说工具不重要,它们很重要,就像什么样的路选择什么样的交通工具,合适的工具可以帮助我们更快地到达目的地。对应数据分析的不同方面,应该选择不同的工具,甚至更容易使用。
  今天的文章 文章 是针对扫盲工具的。
  PS:估计网上没有比这个更全面的了 一、 从工具属性和分析师需求上分
  在企业中,数据分析师通常分为业务和技术两大类。两者的能力和工作内容有很大不同,对工具的要求也不同。
  商业或技术
  业务分析师往往在运营部、市场部、销售部等,根据所服务的业务部门的不同,可能会被称为数据运营、业务分析、会员分析、业务分析师等名称。之所以会出现这种差异,是因为各个业务线所考虑的具体问题不同,分析思路和系统也不同。日常工作更多是整理业务报表,针对具体业务做专题分析,对围绕业务增长需要用到的数据做计算、规划、规划。
  技术分析师,通常在 IT 部门和数据中心。根据工作环节不同,分为数据库工程师、ETL工程师、爬虫工程师、算法工程师等角色。在中小型企业中,通常由技术兄弟负责所有这些流程。在大型企业中,一个标准的数据中心一般都有数据仓库、专题分析、建模分析等小组来完成数据开发工作,无论公司多大,也有专门的数据治理小组。这种区别的原因是需要一个多层次的复杂数据系统来产生数据。一个数据系统需要数据采集、数据集成、数据库管理、数据算法开发和报表设计的组合。这样,可以将散落在各处的数据采集起来,计算成常用指标,并以各种炫酷的图表展示。这里的每一个环节都需要相应的技术支持和人员工作,所以有不同的岗位。
  PS:在找数据分析职位的时候,一定要分清是技术还是业务,是否符合你的专业定位。
  分析师分为技术和业务,相应的工具也有这样的属性。
  分析工具
  对于初级数据分析师来说,玩Excel是必须的,数据透视表和公式的使用一定要精通,VBA是加分项。此外,有必要学习一个统计分析工具。SPSS 是一个很好的切入点。
  对于高级数据分析师来说,使用分析工具是一项核心能力。VBA基本必备,SPSS/SAS/R至少要精通其中一种。其他分析工具(如 Matlab)视情况而定。
  对于数据挖掘工程师……嗯,R 和 Python 是必须的,你必须编写代码来解决它。
  代码工具
  对于初级数据分析师,可以写SQL查询,有需要的可以写Hadoop和Hive查询,基本没问题。
  对于高级数据分析师来说,除了 SQL 之外,还需要学习 Python,使用 Python 可以更轻松地获取和处理数据。当然其他编程语言也是可以的。
  对于数据挖掘工程师来说,Hadoop一定要熟悉,Python/Java/C++至少要熟悉一个,Shell一定会用……总之,编程语言绝对是数据挖掘工程师的核心能力。
  一张图来说明问题:
  
  二、从企业数据应用架构划分
  工具的使用还取决于企业的需求和环境。为什么小企业雇佣数据分析师用 Excel 做报告,而大公司雇佣数据分析师玩 Python 和 R?这取决于企业的数据架构。
  从 IT 的角度来看,数据工具在实际应用中可以分为两个维度:
  第一维度:数据存储层-数据报告层-数据分析层-数据表现层
  第二维度:用户级-部门级-企业级-BI级
  1、数据存储层
  从数据存储设计到数据库概念和数据库语言,这方面不必深入研究,毕竟有专业的DBA。但至少了解数据是如何存储的,数据的基本结构和数据类型。SQL查询语言必不可少,精通才是最好的。可以从常见的select查询、update修改、delete删除、insert插入的基本结构和阅读入手。
  Access是最基本的个人数据库,常用于个人或一些基础数据的存储;MySQL 数据库,这是部门级或 Internet 数据库应用程序所必需的。这时,关键是掌握数据库结构和SQL语言数据查询能力。SQL Server 2005或之后的版本,对于中小型企业来说,一些大型企业也可以使用SQL Server数据库,其实此时除了数据存储,还包括数据报表和数据分析。
  DB2和Oracle数据库都是大型数据库,主要是企业级,特别是大型企业或者需要海量数据存储的企业。一般来说,大型数据库公司提供非常好的数据集成应用平台。
  BI级别,其实这不是数据库,而是基于之前数据库的企业级应用的数据仓库。Data Warehouse,建立在DW机器上的数据存储,基本上是一个集各种数据分析、报表、分析、呈现为一体的商业智能平台。
  2、报表/BI层
  企业存储需要读取和展示的数据,报表工具是最常用的工具,尤其是在中国。过去,传统报表大多解决了呈现的问题,但现在衍生出一些分析报表工具,也会与其他应用交叉,制作数据分析报表。涵盖早期商业智能的功能。
  Tableau、PowerBI、FineBI 和 Qlikview 等 BI(商业智能)工具涵盖了多层报告、数据分析和可视化。底层也可以连接数据仓库,构建OLAP分析模型。
  3、数据分析层
  其实这一层有很多分析工具,当然最常用的就是Excel了。
  Excel软件,首先,版本越高越好用。当然,对于excel,很多人只掌握了Excel 5%的功能。Excel的功能非常强大,甚至可以完成所有的统计分析工作!但我也常说,有能力把Excel当作统计工具玩,比专攻统计软件要好。
  SPSS软件:当前版本为18,名称也已更改为PASW Statistics;我是从3.0开始在Dos环境下编程分析的,目前版本的变化也可以看到SPSS社会科学统计包的变化,从Emphasis on Medicine、Chemical等开始多加和更加重视业务分析,现在它已经成为预测分析软件。
  SAS软件:SAS其实比SPSS更强大。SAS平台化,集成EM挖矿模块平台。相对来说,SAS 比较难学,但是如果你掌握了 SAS 会更有价值,比如离散选择模型、抽样问题、正交实验设计等等还是 SAS 更好用,另外 SAS 还有更多学习资料。
  其他还有 Python 和 R,后面会详细讨论。
  4、表示层
  表示层也称为数据可视化,上面几乎每个工具都提供了一点表示。但是,最常用的企业级应用程序是 BI,用于分析和报告。
  
  PS:需要注意的是,这个分类不区分软件,只是想说明软件的应用。有时我们用数据库做报表分析,有时报表就是分析,有时分析就是呈现;当然,有时候呈现就是分析,分析也是报表,报表就是数据存储!三、4大工具盘点
  以上就啰嗦了这么多,下面详细说说Excel、R、Python、BI。
  >>>>Excel
  适用场景:
  1.一般办公需求的数据处理;
  2.中小企业数据管理和存储(很多国企使用);
  3.在校学生、教师做简单的统计分析(如方差分析、回归分析);
  4.结合Word和PowerPoint制作数据分析报告;
  5.数据分析师的主要分析工具(数据分析师的一些辅助工具);
  6.部分商业杂志、报纸图表制作(数据可视化);
  优势:
  1.容易上手;
  2.学习资源非常丰富;
  3.你可以用Excel、建模、可视化、报告、动态图表做很多事情;
  4.帮助你在学习其他工具(如Python、R)之前了解很多操作的含义;
  缺点:
  1.深入学习需要掌握VBA,还是很困难的;
  2.数据量大时会卡住;
  3.到Excel 2016,不借助其他工具,Excel数据文件本身只能容纳108万行数据,不适合处理大规模数据集;
  4.内置统计分析的种类过于简单,实用价值不大;
  5.不同于Python、R语言等开源软件,正版Excel是需要付费的,比如我用office365.一年要300多块钱(但很值得)
  >>>>R
  使用场景:
  借助扩展的第三方 R 包,R 几乎可以做任何需要数据的事情。就我们一般的数据分析或学术数据分析工作而言,R能做的包括但不限于以下几点:
  1.数据清洗和排序;
  2.网络爬虫;
  3.数据可视化;
  4.统计假设检验(t检验、ANOVA、卡方检验等);
  5.统计建模(线性回归、逻辑回归、树模型、神经网络等);
  6.数据分析报告输出(Rmarkdown);
  R 容易学吗?
  从我个人的角度来看,R入门是非常容易的。经过10天的强化学习,掌握R的基本使用、基本数据结构、数据导入导出、简单的数据可视化是绝对没有问题的. 有了这些基础,在遇到实际问题时,可以找到自己需要使用的R包,阅读R的帮助文档,以及网上的资料,可以比较快速的解决具体问题。
  >>>>蟒蛇
  R语言和Python都是需要编程的数据分析工具。不同的是,R专门用于数据分析领域,而科学计算和数据分析只是Python的一个应用分支。Python还可以用于开发网页和游戏。,做系统的后端开发和运维。
  现在的一个趋势是Python在数据分析领域正在赶超R,并且在某些方面已经超越了R,比如机器学习、文本挖掘等部分编程领域,但是R语言在数据分析领域仍然保持着优势。部分统计。Python在数据分析方面的发展在很多地方借鉴了R语言的一些特性。所以,如果你还是一片空白,还没有开始学习,又想决定学R还是Python,建议从Python入手。
  Python和R都比较容易学,但是如果同时学,很容易混淆,因为很多地方都非常相似,所以不建议同时学。等你掌握其中一个到一定程度,再开始学习另一个。
  Python 能做什么?
  1.网络数据爬取,使用Python可以轻松编写强大的爬虫爬取网络数据;
  2.数据清洗;
  3.数据建模;
  4.根据业务场景和实际问题构建数据分析算法;
  5.数据可视化(个人感觉不如R好用);
  6.机器学习、文本挖掘等高级数据挖掘分析领域;
  我应该学习 R 还是 Python?
  如果因为时间有限只能选择其中之一学习,我推荐使用 Python。但我仍然建议了解两者,毕竟每个人都不一样。你可能在一些地方听说过,Python在工作中比较常用,但在工作中,解决问题才是最重要的。如果能用R高效解决问题,就用R吧。其实Python的很多数据分析特性都是模仿R实现的,比如pandas数据框,正在开发的ggplot可视化包模仿了R语言中非常有名的ggplot< @2.
  >>>>BI
  大多数分析师的日常工作是做报告,而数据分析师使用的报告较多的是BI。
  BI代表商业智能。在传统企业中,它是一整套解决方案。有效整合企业数据,快速生成决策报表。涉及数据仓库、ETL、OLAP、权限控制等模块。
  BI 工具有两个主要目的。一种是使用 BI 制作自动化报告。数据工作每天都涉及大量的数据,需要整理汇总,工作量很大。这部分工作可以交给BI自动化来完成,从数据正则化、建模到下载。
  另一种是利用其可视化功能进行分析。BI的优点是提供了比Excel更丰富的可视化功能,操作简单,美观。如果你每天需要两个小时的绘图时间,BI 会缩短一半的时间。
  BI作为企业级应用,可用于连接公司数据库,实现企业级报表的制作。本篇涉及数据架构,不再深入讨论。
  关于BI,Tableau、PowerBI、FineBI、Qlikview等BI(商业智能)工具覆盖了报表、数据分析、可视化等多个层面。底层也可以连接数据仓库,构建OLAP分析模型。
  就个人而言,为了快速启动数据分析和培养早期数据思维,BI工具无疑是最容易使用的。下一篇文章将教你如何搭建BI分析平台,学习操作BI工具!

vba 网页数据抓取(【分享成果,随喜正能量】人可以无知,但不可以无趣)

网站优化优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2022-04-14 11:29 • 来自相关话题

  vba 网页数据抓取(【分享成果,随喜正能量】人可以无知,但不可以无趣)
  【分享成果,因正能量而欢欣鼓舞】人可以无知,但不乏味。在心里种下一颗幸福的种子,坚定快乐地做自己的事,让大家不那么无聊。
  《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次改版。这套教程定位在最高级的水平。这是针对初学者和中级的教程。本教程将为大家讲解:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO对象的使用、获取工作表和文件夹信息、图形信息获取、自定义工作表信息功能等。程序文件在32位和64位OFFICE系统上测试。它非常抽象,具有更多的研究价值。
  本课程由两卷八十四讲组成。今天的内容是Topic 8《VBA与HTML文档》第二节上半部分:HTML文档中常用元素总结
  
  第二节 HTML文档的元素分析之一
  3)HTML 评论
  注释标签用于在 HTML 中插入注释。可以在 HTML 代码中插入注释以提高其可读性并使代码更易于理解。浏览器会忽略评论并且不显示它们。感叹号需要紧跟在左括号(左括号)之后,而不是在右括号(右括号)之前。
  评论可以写成以下格式:
  4)段落
  段落是通过
  标签定义。浏览器会自动在段落前后添加空行。(
  是块级元素)
  在上面的例子中,我们使用符号来表示段落
  ,如果我们提取网络小说、新闻等页面新闻的数据,文本是逐段的,这样的页面,我们可以通过
  标签实施。使用ie/webbrowser方法提取此类网页时,遍历所有段落p元素即可。
  使用空段落标记插入空行是一种不好的做法。可以使用
  标签而不是它!(但不要使用
  标记以创建列表。)
  5)超链接
  使用标签在 HTML 中创建链接。
  超链接可以是一个词、一个词或一组词,或者您可以单击以跳转到新文档或当前文档中的一个部分的图像。当您将鼠标指针移到网页中的链接上时,箭头会变成一只小手。
  有两种使用标签的方法:使用 href 属性 - 创建指向另一个文档的链接或使用 name 属性 - 在文档中创建书签。
  超链接是我们最常见的页面元素。基本传送门 网站 有它们。点击后可以跳转到另一个页面。一般语法格式:
  显示的超链接文本
  Target属性表示当我们点击超链接时,是跳转到原页面(_self)还是跳转到新页面(_blank)。
  为了说明这个超链接,我们把“HTML基础学习-1.html”的内容更正一下:
  学习VBA语言
  为了更好的掌握VBA的各个知识点,可以参考我的第一套教程:VBA代码解决方案
  显示学习的网页
  告诉上面的代码,保存为《HTML基础学习-2.html》内容的截图:
  
  打开这个文件:
  
  点击链接:
  查看源代码:
  
  3 本节介绍的HTML文档常用元素总结
  1)标题 -
  2)水平线
  3)评论
  4)段落
  5)超链接
  我们需要熟练掌握以上要素,才能在分析网页时为所欲为。下一讲,我们将继续讲解 HTML 页面的元素。
  回到本节的知识点:
  HTML 文档的框架结构是什么?说出以下元素的标签:标题、水平线、注释、段落、超链接。
  本节参考文档:HTML基础学习-1.html;HTML基础学习-2.html
  
  我20多年的VBA实践经验,全部浓缩在以下教程中,教程学习顺序:
  
  【分享成果,欢喜正能量】生活中,总会有好事发生,也会有坏事发生。我可以处理好的事情,也可以处理坏的事情。像那样做一个普通人也不错。 查看全部

  vba 网页数据抓取(【分享成果,随喜正能量】人可以无知,但不可以无趣)
  【分享成果,因正能量而欢欣鼓舞】人可以无知,但不乏味。在心里种下一颗幸福的种子,坚定快乐地做自己的事,让大家不那么无聊。
  《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次改版。这套教程定位在最高级的水平。这是针对初学者和中级的教程。本教程将为大家讲解:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO对象的使用、获取工作表和文件夹信息、图形信息获取、自定义工作表信息功能等。程序文件在32位和64位OFFICE系统上测试。它非常抽象,具有更多的研究价值。
  本课程由两卷八十四讲组成。今天的内容是Topic 8《VBA与HTML文档》第二节上半部分:HTML文档中常用元素总结
  
  第二节 HTML文档的元素分析之一
  3)HTML 评论
  注释标签用于在 HTML 中插入注释。可以在 HTML 代码中插入注释以提高其可读性并使代码更易于理解。浏览器会忽略评论并且不显示它们。感叹号需要紧跟在左括号(左括号)之后,而不是在右括号(右括号)之前。
  评论可以写成以下格式:
  4)段落
  段落是通过
  标签定义。浏览器会自动在段落前后添加空行。(
  是块级元素)
  在上面的例子中,我们使用符号来表示段落
  ,如果我们提取网络小说、新闻等页面新闻的数据,文本是逐段的,这样的页面,我们可以通过
  标签实施。使用ie/webbrowser方法提取此类网页时,遍历所有段落p元素即可。
  使用空段落标记插入空行是一种不好的做法。可以使用
  标签而不是它!(但不要使用
  标记以创建列表。)
  5)超链接
  使用标签在 HTML 中创建链接。
  超链接可以是一个词、一个词或一组词,或者您可以单击以跳转到新文档或当前文档中的一个部分的图像。当您将鼠标指针移到网页中的链接上时,箭头会变成一只小手。
  有两种使用标签的方法:使用 href 属性 - 创建指向另一个文档的链接或使用 name 属性 - 在文档中创建书签。
  超链接是我们最常见的页面元素。基本传送门 网站 有它们。点击后可以跳转到另一个页面。一般语法格式:
  显示的超链接文本
  Target属性表示当我们点击超链接时,是跳转到原页面(_self)还是跳转到新页面(_blank)。
  为了说明这个超链接,我们把“HTML基础学习-1.html”的内容更正一下:
  学习VBA语言
  为了更好的掌握VBA的各个知识点,可以参考我的第一套教程:VBA代码解决方案
  显示学习的网页
  告诉上面的代码,保存为《HTML基础学习-2.html》内容的截图:
  
  打开这个文件:
  
  点击链接:
  查看源代码:
  
  3 本节介绍的HTML文档常用元素总结
  1)标题 -
  2)水平线
  3)评论
  4)段落
  5)超链接
  我们需要熟练掌握以上要素,才能在分析网页时为所欲为。下一讲,我们将继续讲解 HTML 页面的元素。
  回到本节的知识点:
  HTML 文档的框架结构是什么?说出以下元素的标签:标题、水平线、注释、段落、超链接。
  本节参考文档:HTML基础学习-1.html;HTML基础学习-2.html
  
  我20多年的VBA实践经验,全部浓缩在以下教程中,教程学习顺序:
  
  【分享成果,欢喜正能量】生活中,总会有好事发生,也会有坏事发生。我可以处理好的事情,也可以处理坏的事情。像那样做一个普通人也不错。

vba 网页数据抓取(如何轻松用Excel获取网页数据的一些初步的爬虫方法)

网站优化优采云 发表了文章 • 0 个评论 • 72 次浏览 • 2022-04-14 10:24 • 来自相关话题

  vba 网页数据抓取(如何轻松用Excel获取网页数据的一些初步的爬虫方法)
  通常我们使用Excel,经常处理本地数据。你知道 Excel 的排序、过滤、条件格式、数据透视表、图表等……但你可能不知道如何在 Excel 中获取网页上的数据!
  网络爬虫?!你可能认为你必须编写代码来实现这一点。其实除了代码,Excel还有一些现成的功能,让你不用代码也能获取网页的数据!
  下面的方法中,前三种不用写代码,最后一种需要代码,不过我已经写好了,可以用了,这样你也可以学会轻松使用Excel获取一些web的初步爬虫页面数据方法!
  功能方法
  从 Excel 2013 版本开始,引入了一些 Web 功能。下面两个函数可以一起使用,帮助我们从网页获取数据到Excel。
  FILTERXML(xml, xpath),从 XML 数据中返回指定的数据。网页上的许多数据都以 XML 的形式存在。该函数用于提取 XML 中的指定信息。
  WEBSERVICE(url),返回网页中的数据,可以理解为这个函数可以获取一堆XML字符串数据。
  例如下面的公式使用有道翻译的网站得到翻译结果:
  =FILTERXML(WEBSERVICE(";i="&B2&"&doctype=xml&version"),"//translation")
  
  如果你把上面的公式复制到Excel,你只需要在B2单元格输入你要翻译的内容,公式就会把翻译结果返回给你!
  
  是不是觉得超级方便!对于外部数据的轻量级连接,这个函数方式还是比较方便的。
  除了翻译,使用此功能还可以协助您进行股票交易!我在工作,不方便使用手机或阅读财经网页,但我想关注实时股价。我怎样才能打破它?
  把下面的公式复制到B1单元格,然后在A1单元格输入你关心的股票代码,B1就可以显示实时股价了,想刷新的时候按F9就行了~
  =VALUE(TRIM(MID(SUBSTITUTE(WEBSERVICE("/stockdata/stock_quote.aspx?stocklist="&A1&"&time=" & TEXT(NOW(), "hhmmss"))),",",REPT(" ",9 9)),2*99,111)))
  当你在专心看Excel工作(chao)工作(gu)时,即使老板突然路过,你也能从容应对!不要让你的老板知道这个技能!
  但是你也需要注意使用这个公式。首先,您必须确保您的计算机可以正常连接到 Internet。另外,如果你翻译调整了网页代码,或者网站的入口发生了变化,上面的公式也会失效,你需要重新研究一下逻辑。写公式~
  旧版网页查询功能
  在Excel 2016之前,一直有获取网页数据的功能,在Excel 2016推出PQ后隐藏了,但是还是可以手动调出来的!
  手动方法可以从“选项”中的“数据”设置其显示,也可以直接按快捷键Alt+D+D+W(注:不需要同时按,直接按依次进行,就可以了!),会弹出如下界面:
  
  然后我们只需要输入网页地址,如图所示地址为#06f01。
  这个功能可以帮助我们识别网页中的表格,然后我们只需要选中表格(点击黄色箭头选择),点击右下角的导入,就可以将数据导入Excel了!
  而且还可以刷新这张表,同时支持手动刷新和自动刷新,非常方便~
  
  这种方法的问题在于,并不是所有的网页都能获取数据,因为你可能无法获取到真实的网址,所以你应该尽量找到最深入的地址。你有办法爬取,别人有办法逆向,所以要不断获取网页的数据,需要密切关注网页是否发生变化~
  Power Query 获取网页数据
  从Excel 2016开始,PQ已经集成在Excel中,并且计划替换旧版本的数据查询和获取功能,所以使用PQ也可以帮助我们从网页中获取数据!
  
  因为动画太大上传不了,我就用截图来说明步骤:
  
  2、在出现的导航器中,点击表格开头的图标,右侧会有这些表格的预览,选择你要导入的表格,点击右下角的“加载”
  
  3、然后就可以获取表格数据到Excel了,而且还支持手动刷新和自动刷新!
  
  VBA代码方法
  其实以上方法都不是真正的“爬虫”技能。要更灵活地获取数据,需要使用VBA代码。
  使用VBA获取网页数据当然可以结合以上三种方式,因为写代码就是可以判断和循环,就像上面的股票收盘价信息一样,可以循环获取多只股票的数据现在,会更方便!
  比如用VBA调用第二种方法,结合Excel的基本功能对数据进行组织提取,就可以得到历史天气数据!下面使用VBA方式获取天气数据~
  对于零售业来说,天气确实是一个非常重要的因素,它会影响客流和季节性产品的销售。因此,有必要对历史天气数据进行分析!
  如何批量获取天气数据?以下是获取北京2019年11月历史天气数据的结果:
  
  这需要使用 VBA 代码。上述方法不适合大量获取数据。不会码字?没关系,我已经写好解释了,你复制后稍加修改即可使用。(代码在文末)
  如果还想获取多个城市、多个年份、多个月份的数据,那么就需要考虑更多的情况。您可以根据文末提供的代码修改实现。 查看全部

  vba 网页数据抓取(如何轻松用Excel获取网页数据的一些初步的爬虫方法)
  通常我们使用Excel,经常处理本地数据。你知道 Excel 的排序、过滤、条件格式、数据透视表、图表等……但你可能不知道如何在 Excel 中获取网页上的数据!
  网络爬虫?!你可能认为你必须编写代码来实现这一点。其实除了代码,Excel还有一些现成的功能,让你不用代码也能获取网页的数据!
  下面的方法中,前三种不用写代码,最后一种需要代码,不过我已经写好了,可以用了,这样你也可以学会轻松使用Excel获取一些web的初步爬虫页面数据方法!
  功能方法
  从 Excel 2013 版本开始,引入了一些 Web 功能。下面两个函数可以一起使用,帮助我们从网页获取数据到Excel。
  FILTERXML(xml, xpath),从 XML 数据中返回指定的数据。网页上的许多数据都以 XML 的形式存在。该函数用于提取 XML 中的指定信息。
  WEBSERVICE(url),返回网页中的数据,可以理解为这个函数可以获取一堆XML字符串数据。
  例如下面的公式使用有道翻译的网站得到翻译结果:
  =FILTERXML(WEBSERVICE(";i="&B2&"&doctype=xml&version"),"//translation")
  
  如果你把上面的公式复制到Excel,你只需要在B2单元格输入你要翻译的内容,公式就会把翻译结果返回给你!
  
  是不是觉得超级方便!对于外部数据的轻量级连接,这个函数方式还是比较方便的。
  除了翻译,使用此功能还可以协助您进行股票交易!我在工作,不方便使用手机或阅读财经网页,但我想关注实时股价。我怎样才能打破它?
  把下面的公式复制到B1单元格,然后在A1单元格输入你关心的股票代码,B1就可以显示实时股价了,想刷新的时候按F9就行了~
  =VALUE(TRIM(MID(SUBSTITUTE(WEBSERVICE("/stockdata/stock_quote.aspx?stocklist="&A1&"&time=" & TEXT(NOW(), "hhmmss"))),",",REPT(" ",9 9)),2*99,111)))
  当你在专心看Excel工作(chao)工作(gu)时,即使老板突然路过,你也能从容应对!不要让你的老板知道这个技能!
  但是你也需要注意使用这个公式。首先,您必须确保您的计算机可以正常连接到 Internet。另外,如果你翻译调整了网页代码,或者网站的入口发生了变化,上面的公式也会失效,你需要重新研究一下逻辑。写公式~
  旧版网页查询功能
  在Excel 2016之前,一直有获取网页数据的功能,在Excel 2016推出PQ后隐藏了,但是还是可以手动调出来的!
  手动方法可以从“选项”中的“数据”设置其显示,也可以直接按快捷键Alt+D+D+W(注:不需要同时按,直接按依次进行,就可以了!),会弹出如下界面:
  
  然后我们只需要输入网页地址,如图所示地址为#06f01。
  这个功能可以帮助我们识别网页中的表格,然后我们只需要选中表格(点击黄色箭头选择),点击右下角的导入,就可以将数据导入Excel了!
  而且还可以刷新这张表,同时支持手动刷新和自动刷新,非常方便~
  
  这种方法的问题在于,并不是所有的网页都能获取数据,因为你可能无法获取到真实的网址,所以你应该尽量找到最深入的地址。你有办法爬取,别人有办法逆向,所以要不断获取网页的数据,需要密切关注网页是否发生变化~
  Power Query 获取网页数据
  从Excel 2016开始,PQ已经集成在Excel中,并且计划替换旧版本的数据查询和获取功能,所以使用PQ也可以帮助我们从网页中获取数据!
  
  因为动画太大上传不了,我就用截图来说明步骤:
  
  2、在出现的导航器中,点击表格开头的图标,右侧会有这些表格的预览,选择你要导入的表格,点击右下角的“加载”
  
  3、然后就可以获取表格数据到Excel了,而且还支持手动刷新和自动刷新!
  
  VBA代码方法
  其实以上方法都不是真正的“爬虫”技能。要更灵活地获取数据,需要使用VBA代码。
  使用VBA获取网页数据当然可以结合以上三种方式,因为写代码就是可以判断和循环,就像上面的股票收盘价信息一样,可以循环获取多只股票的数据现在,会更方便!
  比如用VBA调用第二种方法,结合Excel的基本功能对数据进行组织提取,就可以得到历史天气数据!下面使用VBA方式获取天气数据~
  对于零售业来说,天气确实是一个非常重要的因素,它会影响客流和季节性产品的销售。因此,有必要对历史天气数据进行分析!
  如何批量获取天气数据?以下是获取北京2019年11月历史天气数据的结果:
  
  这需要使用 VBA 代码。上述方法不适合大量获取数据。不会码字?没关系,我已经写好解释了,你复制后稍加修改即可使用。(代码在文末)
  如果还想获取多个城市、多个年份、多个月份的数据,那么就需要考虑更多的情况。您可以根据文末提供的代码修改实现。

vba 网页数据抓取(外汇课堂:利用IE控件完成网络数据的任务(图))

网站优化优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2022-04-13 21:04 • 来自相关话题

  vba 网页数据抓取(外汇课堂:利用IE控件完成网络数据的任务(图))
  大家好,今天我们将讲解《VBA信息获取与处理》教程第九题“使用IE捕获网络数据”的第二节。这个话题非常有用。知识点,希望大家能掌握。
  第二部分用IE捕捉资金主要流入的个股
  大家好,下面开始使用IE控件来完成抓取网络数据的任务。由于基础知识已经解释了很多,这里的代码解释会比较简单。大家可以参考我给出的代码注释来理解。
  实现场景:我们在做股票分析的时候,最关心的是资金的动向。是否有大量资金流入是大部分散户投资某只股票的重要依据。我们以财富网提供的主要资金流入存量数据作为数据提取的基础。该网站是:。
  1 使用IE实现主要资金流入数据捕获的思路分析
  为了抓取数据,我们先来看网页。以下是2020年6月11日网页提供的数据:
  
  我们的任务是将上述数据捕获到 EXCEL 表中。为了使用 IE 进行数据捕获,我们必须首先创建一个 IE 引用 CreateObject("InternetExplorer.Application")。然后IE打开给定的URL,.navigate""从网页中实现表号为5,然后将这个表中的数据提取出来。你可以回顾一下我之前关于表格的知识。从 web 文档中提取文档对象,使用 dmt.all.tags("table")(5) 找到这个表,然后使用 tb.Rows(i) .Cells(j).innertext 输出数据。
  2 应用IE实现主要资金流转入数据抓取的代码实现
  为了实现上述思路,我给出如下代码:
  Sub myNZ() '用IE捕捉Fortune Net旗下资金的主要流入股
  昏暗 ie, dmt, tb, i&, j&
  Set myIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象
  工作表(“SHEET1”)。选择
  行(“3:100”)。清除内容
  用我的IE
  .Visible = True '显示它
  .navigate ""'加载东风财富网主要资金流入情况
  Do Until .readystate = 4 '检查页面是否加载(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  set dmt = .document ' 将IE浏览器加载的页面文档赋值给dmt变量
  set tb = dmt.all.tags("table")(5) '通过索引号捕获表对象
  For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" & tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  结束于
  消息框(“确定”)
  结束子
  代码截图:
  
  代码分析:
  1)Set myIE = CreateObject("InternetExplorer.Application") 这段代码是创建一个IE对象,或者后期绑定。引用很好。
  2) 工作表("SHEET1").Select
  行(“3:100”)。清除内容
  清除要填充的数据区域。
  3) 使用 myIE
  .Visible = True '显示它
  .导航“”
  以上代码加载IE中的“”URL,即东风财富网的主要资金流入。
  4) Do Until .readystate = 4 '检查页面是否加载完毕(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  这段代码是为了让页面加载完成,以便以后可以提取页面的数据
  5)Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量,其中dmt是一个对象变量。
  6) set tb = dmt.all.tags("table")(5) '通过索引号捕获table对象,这里的序号是我们对网页的分析得到的,你也可以使用工具来分析网页。
  7)For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" & tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  提取表的数据,其中tb.Rows.Length - 1为行数;tb.Rows(i).Cells(j).innertext 是单元格的内容。
  3 应用IE实现资金主流入和数据抓取的变现效果
  我们点击页面的运行按钮,实现如下数据抓取:
  
  从实现的效果来看,完全满足我们场景的需求。
  回到本节知识点:如何提取页面文档中表格的数据?
  本节参考:009 worksheet.xlsm
  
  块编程思想的内涵:
  在我的系列书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,采用这种方案是很有必要的。其主要内涵:
  1 不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。
  2 建立自己的“块库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA的应用定义
  VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程:
  第一组:VBA代码解法是对VBA中各个知识点的讲解。总共147课,涵盖了初学者必备的大部分VBA知识点;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。
  您可以按照1→3→2→6→5或4→3→2→6→5的顺序根据以上信息逐步深入学习。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一下枯燥的感觉
  如太白诗云:百鸟高飞,孤云独闲。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!
  回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。 查看全部

  vba 网页数据抓取(外汇课堂:利用IE控件完成网络数据的任务(图))
  大家好,今天我们将讲解《VBA信息获取与处理》教程第九题“使用IE捕获网络数据”的第二节。这个话题非常有用。知识点,希望大家能掌握。
  第二部分用IE捕捉资金主要流入的个股
  大家好,下面开始使用IE控件来完成抓取网络数据的任务。由于基础知识已经解释了很多,这里的代码解释会比较简单。大家可以参考我给出的代码注释来理解。
  实现场景:我们在做股票分析的时候,最关心的是资金的动向。是否有大量资金流入是大部分散户投资某只股票的重要依据。我们以财富网提供的主要资金流入存量数据作为数据提取的基础。该网站是:。
  1 使用IE实现主要资金流入数据捕获的思路分析
  为了抓取数据,我们先来看网页。以下是2020年6月11日网页提供的数据:
  
  我们的任务是将上述数据捕获到 EXCEL 表中。为了使用 IE 进行数据捕获,我们必须首先创建一个 IE 引用 CreateObject("InternetExplorer.Application")。然后IE打开给定的URL,.navigate""从网页中实现表号为5,然后将这个表中的数据提取出来。你可以回顾一下我之前关于表格的知识。从 web 文档中提取文档对象,使用 dmt.all.tags("table")(5) 找到这个表,然后使用 tb.Rows(i) .Cells(j).innertext 输出数据。
  2 应用IE实现主要资金流转入数据抓取的代码实现
  为了实现上述思路,我给出如下代码:
  Sub myNZ() '用IE捕捉Fortune Net旗下资金的主要流入股
  昏暗 ie, dmt, tb, i&, j&
  Set myIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象
  工作表(“SHEET1”)。选择
  行(“3:100”)。清除内容
  用我的IE
  .Visible = True '显示它
  .navigate ""'加载东风财富网主要资金流入情况
  Do Until .readystate = 4 '检查页面是否加载(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  set dmt = .document ' 将IE浏览器加载的页面文档赋值给dmt变量
  set tb = dmt.all.tags("table")(5) '通过索引号捕获表对象
  For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" & tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  结束于
  消息框(“确定”)
  结束子
  代码截图:
  
  代码分析:
  1)Set myIE = CreateObject("InternetExplorer.Application") 这段代码是创建一个IE对象,或者后期绑定。引用很好。
  2) 工作表("SHEET1").Select
  行(“3:100”)。清除内容
  清除要填充的数据区域。
  3) 使用 myIE
  .Visible = True '显示它
  .导航“”
  以上代码加载IE中的“”URL,即东风财富网的主要资金流入。
  4) Do Until .readystate = 4 '检查页面是否加载完毕(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  这段代码是为了让页面加载完成,以便以后可以提取页面的数据
  5)Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量,其中dmt是一个对象变量。
  6) set tb = dmt.all.tags("table")(5) '通过索引号捕获table对象,这里的序号是我们对网页的分析得到的,你也可以使用工具来分析网页。
  7)For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" & tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  提取表的数据,其中tb.Rows.Length - 1为行数;tb.Rows(i).Cells(j).innertext 是单元格的内容。
  3 应用IE实现资金主流入和数据抓取的变现效果
  我们点击页面的运行按钮,实现如下数据抓取:
  
  从实现的效果来看,完全满足我们场景的需求。
  回到本节知识点:如何提取页面文档中表格的数据?
  本节参考:009 worksheet.xlsm
  
  块编程思想的内涵:
  在我的系列书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,采用这种方案是很有必要的。其主要内涵:
  1 不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。
  2 建立自己的“块库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA的应用定义
  VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程:
  第一组:VBA代码解法是对VBA中各个知识点的讲解。总共147课,涵盖了初学者必备的大部分VBA知识点;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。
  您可以按照1→3→2→6→5或4→3→2→6→5的顺序根据以上信息逐步深入学习。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一下枯燥的感觉
  如太白诗云:百鸟高飞,孤云独闲。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!
  回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。

vba 网页数据抓取(HTML代码应将所选页面的所有数据复制到sheet1链接 )

网站优化优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2022-04-01 19:07 • 来自相关话题

  vba 网页数据抓取(HTML代码应将所选页面的所有数据复制到sheet1链接
)
  我不确定错误来自哪里,我明白了。
  以下代码应该会有所帮助,它将指定页面的表格内容打印到调试窗口。
  以下代码应将所选页面的所有数据复制到 sheet1
  您需要在 VBA 编辑器中添加一些引用才能使用它。(工具菜单,参考,然后找到并选择它们)Microsoft HTML 对象库和 Microsoft Internet 控件
  Const MaxPage = 2 ' set to 26 (or however many there are) - at 2 for testing purposes
Dim Browser As InternetExplorer
Sub Start()
Dim Page As Integer: Page = 1 ' start at page 1
Dim PageDocument As IHTMLDocument
Dim RecordRow As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1") ' output sheet
If Browser Is Nothing Then
Set Browser = New InternetExplorer
End If
Dim oRow As Integer: oRow = 2 ' begin output at row 2 (account for header)
Dim Record As Integer
For Page = 1 To MaxPage
LoadPage Page
For Record = 0 To 99 ' zero index, 100 items (1-99)
Set PageDocument = Browser.Document
Set RecordRow = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(Record).getElementsByTagName("td")
Sheet.Cells(oRow, 1).Value = Trim(RecordRow(0).innerText)
Sheet.Cells(oRow, 2).Value = Trim(RecordRow(1).innerText)
Sheet.Cells(oRow, 3).Value = Trim(RecordRow(2).innerText)
Sheet.Cells(oRow, 4).Value = Trim(RecordRow(3).innerText)
Sheet.Cells(oRow, 5).Value = Trim(RecordRow(4).innerText)
Sheet.Cells(oRow, 6).Value = Trim(RecordRow(5).innerText)
oRow = oRow + 1
Next Record
Next Page
Browser.Quit
End Sub
Sub LoadPage(ByVal PageNumber As Integer)
Debug.Print "Navigating to Page #" & CStr(PageNumber)
Browser.navigate "https://www.worldathletics.org ... ot%3B & CStr(PageNumber)
While Browser.readyState 4 Or Browser.Busy: DoEvents: Wend
Debug.Print "Navigation Complete"
End Sub
  更新代码
  Index Out-of-Bound 错误很可能是由于硬编码的索引,如果页面没有 99 条记录则失败,或者如果记录没有 5 个字段则失败。下面的代码去除了索引,只抓取了它找到的每一行和单元格。你不应该得到索引错误,但输出可能是锯齿状的。
  进一步更新
  462 错误是由 Browser.Quit 引起的。这会关闭浏览器,但不会设置对 Nothing 的引用,因此当您再次运行代码时,它会尝试使用不存在的浏览器。最后将其显式设置为 null 可以解决此问题。
  竞争对手列中没有链接,整行都有一个由其他东西处理的数据 url。但是,可以轻松访问该 URL。
  Sub NewStart()
Dim PageDocument As IHTMLDocument
Dim Records As IHTMLElementCollection
Dim Record As IHTMLElement
Dim RecordItems As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim OutputRow As Integer: OutputRow = 2
Dim OutputColumn As Integer
Dim Page As Integer
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
If Browser Is Nothing Then
Set Browser = New InternetExplorer
Browser.Visible = True
End If
For Page = 1 To MaxPage
LoadPage Page
Set PageDocument = Browser.Document
Set Records = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")
For Each Record In Records
Set RecordItems = Record.getElementsByTagName("td")
OutputColumn = 1
For Each RecordItem In RecordItems
Sheet.Cells(OutputRow, OutputColumn).Value = Trim(RecordItem.innerText)
OutputColumn = OutputColumn + 1
Next RecordItem
Sheet.Cells(OutputRow, OutputColumn).Value = "http://worldathletics.org/" & Record.getAttribute("data-athlete-url") ' This will add the link after the last column
OutputRow = OutputRow + 1
Next Record
Next Page
Browser.Quit
Set Browser = Nothing ' This will fix the 462 error
End Sub 查看全部

  vba 网页数据抓取(HTML代码应将所选页面的所有数据复制到sheet1链接
)
  我不确定错误来自哪里,我明白了。
  以下代码应该会有所帮助,它将指定页面的表格内容打印到调试窗口。
  以下代码应将所选页面的所有数据复制到 sheet1
  您需要在 VBA 编辑器中添加一些引用才能使用它。(工具菜单,参考,然后找到并选择它们)Microsoft HTML 对象库和 Microsoft Internet 控件
  Const MaxPage = 2 ' set to 26 (or however many there are) - at 2 for testing purposes
Dim Browser As InternetExplorer
Sub Start()
Dim Page As Integer: Page = 1 ' start at page 1
Dim PageDocument As IHTMLDocument
Dim RecordRow As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1") ' output sheet
If Browser Is Nothing Then
Set Browser = New InternetExplorer
End If
Dim oRow As Integer: oRow = 2 ' begin output at row 2 (account for header)
Dim Record As Integer
For Page = 1 To MaxPage
LoadPage Page
For Record = 0 To 99 ' zero index, 100 items (1-99)
Set PageDocument = Browser.Document
Set RecordRow = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(Record).getElementsByTagName("td")
Sheet.Cells(oRow, 1).Value = Trim(RecordRow(0).innerText)
Sheet.Cells(oRow, 2).Value = Trim(RecordRow(1).innerText)
Sheet.Cells(oRow, 3).Value = Trim(RecordRow(2).innerText)
Sheet.Cells(oRow, 4).Value = Trim(RecordRow(3).innerText)
Sheet.Cells(oRow, 5).Value = Trim(RecordRow(4).innerText)
Sheet.Cells(oRow, 6).Value = Trim(RecordRow(5).innerText)
oRow = oRow + 1
Next Record
Next Page
Browser.Quit
End Sub
Sub LoadPage(ByVal PageNumber As Integer)
Debug.Print "Navigating to Page #" & CStr(PageNumber)
Browser.navigate "https://www.worldathletics.org ... ot%3B & CStr(PageNumber)
While Browser.readyState 4 Or Browser.Busy: DoEvents: Wend
Debug.Print "Navigation Complete"
End Sub
  更新代码
  Index Out-of-Bound 错误很可能是由于硬编码的索引,如果页面没有 99 条记录则失败,或者如果记录没有 5 个字段则失败。下面的代码去除了索引,只抓取了它找到的每一行和单元格。你不应该得到索引错误,但输出可能是锯齿状的。
  进一步更新
  462 错误是由 Browser.Quit 引起的。这会关闭浏览器,但不会设置对 Nothing 的引用,因此当您再次运行代码时,它会尝试使用不存在的浏览器。最后将其显式设置为 null 可以解决此问题。
  竞争对手列中没有链接,整行都有一个由其他东西处理的数据 url。但是,可以轻松访问该 URL。
  Sub NewStart()
Dim PageDocument As IHTMLDocument
Dim Records As IHTMLElementCollection
Dim Record As IHTMLElement
Dim RecordItems As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim OutputRow As Integer: OutputRow = 2
Dim OutputColumn As Integer
Dim Page As Integer
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
If Browser Is Nothing Then
Set Browser = New InternetExplorer
Browser.Visible = True
End If
For Page = 1 To MaxPage
LoadPage Page
Set PageDocument = Browser.Document
Set Records = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")
For Each Record In Records
Set RecordItems = Record.getElementsByTagName("td")
OutputColumn = 1
For Each RecordItem In RecordItems
Sheet.Cells(OutputRow, OutputColumn).Value = Trim(RecordItem.innerText)
OutputColumn = OutputColumn + 1
Next RecordItem
Sheet.Cells(OutputRow, OutputColumn).Value = "http://worldathletics.org/" & Record.getAttribute("data-athlete-url") ' This will add the link after the last column
OutputRow = OutputRow + 1
Next Record
Next Page
Browser.Quit
Set Browser = Nothing ' This will fix the 462 error
End Sub

vba 网页数据抓取( 263Python开发的exe可执行程序-数据采集/电商)

网站优化优采云 发表了文章 • 0 个评论 • 116 次浏览 • 2022-03-22 14:49 • 来自相关话题

  vba 网页数据抓取(
263Python开发的exe可执行程序-数据采集/电商)
  
  数据采集/电商数据采集/超大网站采集' />
  数据采集/电商数据采集/超大网站采集
  热度:263
  Python开发的exe可执行程序,可视化界面操作,无需安装;用于速卖通平台商品信息采集,导出、替换;1、采集速卖通商品数据:标题、颜色、尺寸、描述、品牌信息等;2、采集可以获取给定分类页面的速卖通商品url;3、采集输出对应的Excel表格和图片,可以自定义输出模板或给定一个固定的表头,根据表头内容填写。导出后可保存模板导出记录,方便下次根据模板导出数据;4、品牌更换区可批量更换此采集表格中品牌的内容可以为空或我指定的名称;
  
  数据采集/互联网数据采集/电子商务' />
  数据采集/互联网数据采集/电子商务
  热量:704
  Python+Django开发的网页版展示分析;一个网站的中奖结果,结果必须一致;分析采集之后的数据;
  
  数据采集及数据监控系统' />
  微信公众号数据采集及数据监控系统
  热量:286
  采集System:用Python开发的可执行程序;数据管理系统:基于PHP+MYSQL架构的在线WEB解决方案,可部署在内网或外网访问;随着移动互联网的普及,越来越多的人喜欢通过微信进行交流,而微信自媒体平台也逐渐兴起,对于人们日常关心的话题也越来越展现出巨大的商机。本项目涉及微信数据采集和微信数据分析两个子系统。前者传递指定的关键词,采集数据需要每天定时关注,后者传递采集的数据。数据,以及数据统计分析的相关指标; 查看全部

  vba 网页数据抓取(
263Python开发的exe可执行程序-数据采集/电商)
  
  数据采集/电商数据采集/超大网站采集' />
  数据采集/电商数据采集/超大网站采集
  热度:263
  Python开发的exe可执行程序,可视化界面操作,无需安装;用于速卖通平台商品信息采集,导出、替换;1、采集速卖通商品数据:标题、颜色、尺寸、描述、品牌信息等;2、采集可以获取给定分类页面的速卖通商品url;3、采集输出对应的Excel表格和图片,可以自定义输出模板或给定一个固定的表头,根据表头内容填写。导出后可保存模板导出记录,方便下次根据模板导出数据;4、品牌更换区可批量更换此采集表格中品牌的内容可以为空或我指定的名称;
  
  数据采集/互联网数据采集/电子商务' />
  数据采集/互联网数据采集/电子商务
  热量:704
  Python+Django开发的网页版展示分析;一个网站的中奖结果,结果必须一致;分析采集之后的数据;
  
  数据采集及数据监控系统' />
  微信公众号数据采集及数据监控系统
  热量:286
  采集System:用Python开发的可执行程序;数据管理系统:基于PHP+MYSQL架构的在线WEB解决方案,可部署在内网或外网访问;随着移动互联网的普及,越来越多的人喜欢通过微信进行交流,而微信自媒体平台也逐渐兴起,对于人们日常关心的话题也越来越展现出巨大的商机。本项目涉及微信数据采集和微信数据分析两个子系统。前者传递指定的关键词,采集数据需要每天定时关注,后者传递采集的数据。数据,以及数据统计分析的相关指标;

vba 网页数据抓取(一个空Python应用程序图步骤及引入关键包图)

网站优化优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2022-03-19 00:23 • 来自相关话题

  vba 网页数据抓取(一个空Python应用程序图步骤及引入关键包图)
  在VS环境下,打开VS后点击菜单【文件】/【新建】/【项目】或在页面选择“新建项目”,如下图:
  
  
  由于可以创建的项目类别比较多,而我们这里只需要创建Python应用,我们可以通过上面标注的步骤1进行筛选,然后按照步骤2在列表中选择“Python应用”,点击“下一步” ”。
  
  在“配置新项目”中,也按照上述步骤进行设置。第二步,“位置”可以根据自己的需要进行设置。同样,步骤1中的“项目名称”也可以自己定义。
  这样,我们就创建了一个空的 Python 应用程序,并且会自动创建一个 MySpider.py 文件,在“解决方案管理器”中可以看到,该文件以粗体显示,如下图:
  
  剩下的就是将我们的程序代码添加到这个文件中。
  包的介绍和介绍
  上一篇爬虫开篇提到,我们的爬虫需要引入几个关键包,如下截图所示:
  
  在“解决方案资源管理器”中双击“MySpider.py”文件,将上述信息添加到打开的文件中。
  特别注意,别忘了加上第一行,这个在开头就提到了,它的作用是告诉解释器,这个文件的编码方式。
  BeautifulSoup,这个模块在 bs4 包中。我们将使用它的功能是网页解析和网页数据获取。从字面上看,它是一种“美丽的汤”。
  re,这就是正则表达式模块,它的全称是Regular Expression,正则在开发和实践中的应用是非常广泛的,你可能对“正则”这个名字不是很熟悉,但你也或多或少地使用了不过,对于比如我们在DOS下使用的通配符其实就是正则表达式的一种形式,还有我们在Word中使用的查找/替换功能。不知大家有没有注意到,有一个“Use wildcards”,如果勾选了这个选项,那么你要查找或替换的字符串就可以使用正则表达式了。
  
  正则表达式是一种对字符串进行操作的逻辑公式,就是用一些预先定义好的特定字符以及这些特定字符的组合形成一个“正则字符串”,用来表达对应的字符。字符串的过滤逻辑。
  如果一个人能完全理解规律,这里基本没有灵活应用的“美汤”。在本文中,这不是重点,如果您需要了解更多信息,可以在百度上搜索“正则表达式”。
  urllib.request,网页请求模块,这是网页数据获取的关键,它模拟了我们人们通过浏览器访问一个网址,然后获取网页上所有信息的过程。从它的字面意思可以猜到,就是完成一个对特定URL(即页面所在的网站服务器)的请求,然后让服务器返回你需要并且可以提供的数据根据你的要求。,数据信息以html文档的形式返回。
  urllib.error,这是urllib的错误处理模块。
  xlwt,这个模块以后会更多的处理,是一个关于如何操作熟悉的Excel的模块。这也是网上各种python培训机构用来吸引初学者的噱头。通过python,可以完全控制excel,然后制作各种漂亮的图表。什么能让你摆脱excel,不再需要加班。数据之类的东西完全是个噱头。仔细想想就知道Excel是微软开发的一款办公软件。它提供了 Excel 的所有外部接口。您可以根据这些公共接口控制 Excel。难道你不比微软更了解 Excel 吗?只是你多了一种控制excel的方法。根据我这么多年使用excel的经验,
  再多说几句,我们继续。
  了解网页请求的流程
  下面我们用“谷歌”浏览器来简单介绍一下我们每次访问一个网站时会发生什么(如果你使用的是其他浏览器,你也可以检查一下是否有类似谷歌浏览器的功能,如果没有,你也可以上网下载谷歌浏览器。)
  打开浏览器,然后按F12键(或者Ctrl+Shift+I,或者点击网页中右键快捷菜单最后一项“勾选”),原来的网页显示页面会分成两部分,一一部分是网页展示部分(红色区域A),另一部分(绿色区域B+蓝色区域C)是我们要用来查看网页后面内容的浏览器集成工具,也是我们需要了解实现爬虫,我们首先选择“网络”页面。
  第二部分分为B区和C区。B区是网页本身的源代码,但是这个源代码已经被工具结构化和调整过,方便开发者快速定位各个节点;C区记录了网页每一次在段中发生了什么,也就是我们的浏览器和网站的交互,记录了网页向网站发送了什么信息,网站有什么信息返回,等等。这些都是短信。
  
  此时我们点击网页的“刷新”按钮或者直接在地址栏回车,也就是让网页重新加载,我们看看C区为我们记录了什么。
  
  之后,在时间轴中,用鼠标点击最左边的时间槽,可以看到这是浏览器与网站的第一次交互信息,可以从Request URL(请求URL)中获取一般部分。您浏览器地址栏中的我们的网址信息;
  请求方法是 GET;请求方法有以下6种:
  
  从上面对各个请求方法的简单说明可以看出,并不是所有的方法你都有权限使用,通常出于安全考虑,网站一般只开放有限的请求方法,比如GET、POST、HEAD和其他可能导致安全风险的请求方法将被禁止或保留给网站后端内部使用。通常,我们主要向 GET 和 POST 发送请求。
  在 Request Headers 请求头中,我们可以看到以下关键信息:
  Accept:告诉网站服务器我可以接受什么信息;
  Accept-Encoding:可接受的编码;
  Cookie:通常用于与服务器建立多个会话的信息;
  Host:初始URL中的主机;
  User-Agent:浏览器类型,告诉我我使用的是什么类型的浏览器。使用这个也可以达到欺骗服务器的目的。也就是说,如果你想直接用python访问,它可能会被认为是爬虫,会被服务器拒绝,如果你替换这个属性的值,你就简单的愚弄了服务器。
  其实请求头中还有很多其他类型的参数,这里就不一一说明了。如果您需要它,您可以放心地在网上找到它。我们通常使用上面列出的那些,加上一个Referer。
  向服务器发送请求信息后,服务器会根据您发送的请求返回相应的信息。从下一个时隙可以看出,我们收到了很多网页元素(下图第二部分的方框)。,包括css、js和png等文件),最后组成我们在网页上看到的内容。
  
  查看网页元素
  接下来,我们可以从刚才的“网络”页面进入“元素”,查看我们最想获取的网页信息。“元素”是由该工具结构化和显示的网页的源代码信息。中间的“查看网页源代码”也可以看到,但是这种方法看到的源代码不是结构化的,看起来比较费劲。
  
  我们仍然在这里浏览“元素”。
  
  当我们需要查看网页的哪个部分的信息时,我们可以点击下图中的小箭头图标,然后点击网页上想要查看的内容,如:
  
  您可以在Elements中快速定位源代码的位置,方便我们通过代码获取对应位置的信息。
  其余信息也可以通过这种方式查看。
  获取电影名称
  接下来,我们以首先获取第一页的电影名称为例。
  我们先分析一下网页的源码,找到对应的规则。我们还是点击小箭头,看看整部电影的哪一部分信息在网页的源代码中。在Elements中,可以快速定位到下图中B框的选中部分。自己观察,结合整个网页的显示也可以看到,一页有25条电影信息,都在li等标签定义的列表中,B框选中的部分是我们的第一部电影。,而在第一个列表li中,在class=”item”的div标签中,其他电影的位置在源码中也呈现出相同的结构,也就是说我们只需要获取每个item中的信息即可这个网页的信息可以进一步获取每部电影的内容。
  
  思路确定后,开始,就可以按照步骤开始写代码了:
  第一步是通过URL向网站发送相应的请求,然后我们得到网站返回的网页的源代码,也可以称为网页文件或网页数据。
  
  每一行代码的功能基本都有注释说明,请参考。
  在head字典变量中,我们也可以根据实际需要添加相应的信息,比如Referer、Host等请求字段。确保字段名称拼写正确,并且不能有多余的空格,否则 网站 服务器将无法识别。
  响应变量是服务器返回的网页数据,很多情况下是经过编码的,尤其是收录汉字的网页,所以要将其变成我们可以直接读取的字符串,我们可以使用decode方法对其进行解码。
  这一步之后,我们就可以启动VS的调试功能,看看我们的代码运行结果是否符合我们的预期。直接按F10键单步执行代码,然后可以看到程序从第一行开始执行,并以黄色高亮显示,如下图:
  
  继续按 F10 键,黄色高亮处会跳转到下一个可执行行。当然也可以在要查看的行设置断点,在断点行按F5停止程序执行。设置断点的方法是将当前光标移动到你要设置断点的那一行,然后按F9,你会看到代码编辑区最左边会添加一个断点和一个红点会出现,如下:
  
  我们直接跳过中间的内容,让程序直接运行到我们设置的断点行,按F5,如下图:
  
  我们可以通过监控窗口看到响应变量的内容。
  如何打开监视窗口:
  
  然后将变量拖放到监视框中,如下所示:
  01.gif
  此时,程序还没有执行当前断点行。我们可以改为F10单步走线。当高亮跳转到下一行时,响应就有内容了,如下:
  
  同样的方法,我们也可以在监控框中添加更多的变量,比如sHtml,因为此时响应已经有数据了,但是这个数据只是一个对象。添加 sHtml 后,我们可以通过 F10 单步执行我们的代码对信息进行解码以获得人类可读的内容:
  
  对比响应,我们可以在 sHtml 的值中看到熟悉的 html 源码。下一步是解释这个源代码来分离我们需要的信息。
  第二步,在得到的网页文件中(也就是刚刚得到的sHtml变量),我们可以使用“美汤”进一步分析,得到准确的内容。
  
  ptnTitle 是我们定义的用于获取电影名称的正则表达式。sHtml文本内容由BeautifulSoup的html解析器解析,然后解析结果使用find_all方法将所有class为item的div分隔开形成一个list,通过for循环出每个list中的元素,特别注意参数中的class_=”item”,其中class后面有下划线,主要目的是表示class属性,否则会报错,因为class这个词在python语言中是保留关键字。
  然后,在获取到item中的所有信息后,我们需要通过之前定义的正则表达式来精确匹配我们的电影名称。
  得到片名后,还需要做一些处理,防止电影名出现一些不想要的字符串,比如名字开头和结尾多余的空格,名字中可能出现的斜线“/”。因为电影名除了中文名外可能还收录其他外文名,比如英文、日文等,所以我们需要做出判断,可以把中文名和外文名一起取出来,如果没有外文名,我们will 表示为空。
  写完之后,可以再次开始调试,看看是不是我们需要的结果。同理,是否可以正常获取本页所有电影名。
  通过调试我们可以看到,通过查看程序最后的dataList列表变量,我们得到了第一页所有电影的名字。
  
  既然可以成功获取到电影名,那我就可以用同样的方法获取一个页面上所有电影的其他信息了,比如电影的详细介绍,评分,评分人数,导演等。您可以看到网页上的所有信息以及相应的信息超链接。
  项目源码可通过微信扫描下方二维码关注查看历史文章,也可提前获取关注文章。 查看全部

  vba 网页数据抓取(一个空Python应用程序图步骤及引入关键包图)
  在VS环境下,打开VS后点击菜单【文件】/【新建】/【项目】或在页面选择“新建项目”,如下图:
  
  
  由于可以创建的项目类别比较多,而我们这里只需要创建Python应用,我们可以通过上面标注的步骤1进行筛选,然后按照步骤2在列表中选择“Python应用”,点击“下一步” ”。
  
  在“配置新项目”中,也按照上述步骤进行设置。第二步,“位置”可以根据自己的需要进行设置。同样,步骤1中的“项目名称”也可以自己定义。
  这样,我们就创建了一个空的 Python 应用程序,并且会自动创建一个 MySpider.py 文件,在“解决方案管理器”中可以看到,该文件以粗体显示,如下图:
  
  剩下的就是将我们的程序代码添加到这个文件中。
  包的介绍和介绍
  上一篇爬虫开篇提到,我们的爬虫需要引入几个关键包,如下截图所示:
  
  在“解决方案资源管理器”中双击“MySpider.py”文件,将上述信息添加到打开的文件中。
  特别注意,别忘了加上第一行,这个在开头就提到了,它的作用是告诉解释器,这个文件的编码方式。
  BeautifulSoup,这个模块在 bs4 包中。我们将使用它的功能是网页解析和网页数据获取。从字面上看,它是一种“美丽的汤”。
  re,这就是正则表达式模块,它的全称是Regular Expression,正则在开发和实践中的应用是非常广泛的,你可能对“正则”这个名字不是很熟悉,但你也或多或少地使用了不过,对于比如我们在DOS下使用的通配符其实就是正则表达式的一种形式,还有我们在Word中使用的查找/替换功能。不知大家有没有注意到,有一个“Use wildcards”,如果勾选了这个选项,那么你要查找或替换的字符串就可以使用正则表达式了。
  
  正则表达式是一种对字符串进行操作的逻辑公式,就是用一些预先定义好的特定字符以及这些特定字符的组合形成一个“正则字符串”,用来表达对应的字符。字符串的过滤逻辑。
  如果一个人能完全理解规律,这里基本没有灵活应用的“美汤”。在本文中,这不是重点,如果您需要了解更多信息,可以在百度上搜索“正则表达式”。
  urllib.request,网页请求模块,这是网页数据获取的关键,它模拟了我们人们通过浏览器访问一个网址,然后获取网页上所有信息的过程。从它的字面意思可以猜到,就是完成一个对特定URL(即页面所在的网站服务器)的请求,然后让服务器返回你需要并且可以提供的数据根据你的要求。,数据信息以html文档的形式返回。
  urllib.error,这是urllib的错误处理模块。
  xlwt,这个模块以后会更多的处理,是一个关于如何操作熟悉的Excel的模块。这也是网上各种python培训机构用来吸引初学者的噱头。通过python,可以完全控制excel,然后制作各种漂亮的图表。什么能让你摆脱excel,不再需要加班。数据之类的东西完全是个噱头。仔细想想就知道Excel是微软开发的一款办公软件。它提供了 Excel 的所有外部接口。您可以根据这些公共接口控制 Excel。难道你不比微软更了解 Excel 吗?只是你多了一种控制excel的方法。根据我这么多年使用excel的经验,
  再多说几句,我们继续。
  了解网页请求的流程
  下面我们用“谷歌”浏览器来简单介绍一下我们每次访问一个网站时会发生什么(如果你使用的是其他浏览器,你也可以检查一下是否有类似谷歌浏览器的功能,如果没有,你也可以上网下载谷歌浏览器。)
  打开浏览器,然后按F12键(或者Ctrl+Shift+I,或者点击网页中右键快捷菜单最后一项“勾选”),原来的网页显示页面会分成两部分,一一部分是网页展示部分(红色区域A),另一部分(绿色区域B+蓝色区域C)是我们要用来查看网页后面内容的浏览器集成工具,也是我们需要了解实现爬虫,我们首先选择“网络”页面。
  第二部分分为B区和C区。B区是网页本身的源代码,但是这个源代码已经被工具结构化和调整过,方便开发者快速定位各个节点;C区记录了网页每一次在段中发生了什么,也就是我们的浏览器和网站的交互,记录了网页向网站发送了什么信息,网站有什么信息返回,等等。这些都是短信。
  
  此时我们点击网页的“刷新”按钮或者直接在地址栏回车,也就是让网页重新加载,我们看看C区为我们记录了什么。
  
  之后,在时间轴中,用鼠标点击最左边的时间槽,可以看到这是浏览器与网站的第一次交互信息,可以从Request URL(请求URL)中获取一般部分。您浏览器地址栏中的我们的网址信息;
  请求方法是 GET;请求方法有以下6种:
  
  从上面对各个请求方法的简单说明可以看出,并不是所有的方法你都有权限使用,通常出于安全考虑,网站一般只开放有限的请求方法,比如GET、POST、HEAD和其他可能导致安全风险的请求方法将被禁止或保留给网站后端内部使用。通常,我们主要向 GET 和 POST 发送请求。
  在 Request Headers 请求头中,我们可以看到以下关键信息:
  Accept:告诉网站服务器我可以接受什么信息;
  Accept-Encoding:可接受的编码;
  Cookie:通常用于与服务器建立多个会话的信息;
  Host:初始URL中的主机;
  User-Agent:浏览器类型,告诉我我使用的是什么类型的浏览器。使用这个也可以达到欺骗服务器的目的。也就是说,如果你想直接用python访问,它可能会被认为是爬虫,会被服务器拒绝,如果你替换这个属性的值,你就简单的愚弄了服务器。
  其实请求头中还有很多其他类型的参数,这里就不一一说明了。如果您需要它,您可以放心地在网上找到它。我们通常使用上面列出的那些,加上一个Referer。
  向服务器发送请求信息后,服务器会根据您发送的请求返回相应的信息。从下一个时隙可以看出,我们收到了很多网页元素(下图第二部分的方框)。,包括css、js和png等文件),最后组成我们在网页上看到的内容。
  
  查看网页元素
  接下来,我们可以从刚才的“网络”页面进入“元素”,查看我们最想获取的网页信息。“元素”是由该工具结构化和显示的网页的源代码信息。中间的“查看网页源代码”也可以看到,但是这种方法看到的源代码不是结构化的,看起来比较费劲。
  
  我们仍然在这里浏览“元素”。
  
  当我们需要查看网页的哪个部分的信息时,我们可以点击下图中的小箭头图标,然后点击网页上想要查看的内容,如:
  
  您可以在Elements中快速定位源代码的位置,方便我们通过代码获取对应位置的信息。
  其余信息也可以通过这种方式查看。
  获取电影名称
  接下来,我们以首先获取第一页的电影名称为例。
  我们先分析一下网页的源码,找到对应的规则。我们还是点击小箭头,看看整部电影的哪一部分信息在网页的源代码中。在Elements中,可以快速定位到下图中B框的选中部分。自己观察,结合整个网页的显示也可以看到,一页有25条电影信息,都在li等标签定义的列表中,B框选中的部分是我们的第一部电影。,而在第一个列表li中,在class=”item”的div标签中,其他电影的位置在源码中也呈现出相同的结构,也就是说我们只需要获取每个item中的信息即可这个网页的信息可以进一步获取每部电影的内容。
  
  思路确定后,开始,就可以按照步骤开始写代码了:
  第一步是通过URL向网站发送相应的请求,然后我们得到网站返回的网页的源代码,也可以称为网页文件或网页数据。
  
  每一行代码的功能基本都有注释说明,请参考。
  在head字典变量中,我们也可以根据实际需要添加相应的信息,比如Referer、Host等请求字段。确保字段名称拼写正确,并且不能有多余的空格,否则 网站 服务器将无法识别。
  响应变量是服务器返回的网页数据,很多情况下是经过编码的,尤其是收录汉字的网页,所以要将其变成我们可以直接读取的字符串,我们可以使用decode方法对其进行解码。
  这一步之后,我们就可以启动VS的调试功能,看看我们的代码运行结果是否符合我们的预期。直接按F10键单步执行代码,然后可以看到程序从第一行开始执行,并以黄色高亮显示,如下图:
  
  继续按 F10 键,黄色高亮处会跳转到下一个可执行行。当然也可以在要查看的行设置断点,在断点行按F5停止程序执行。设置断点的方法是将当前光标移动到你要设置断点的那一行,然后按F9,你会看到代码编辑区最左边会添加一个断点和一个红点会出现,如下:
  
  我们直接跳过中间的内容,让程序直接运行到我们设置的断点行,按F5,如下图:
  
  我们可以通过监控窗口看到响应变量的内容。
  如何打开监视窗口:
  
  然后将变量拖放到监视框中,如下所示:
  01.gif
  此时,程序还没有执行当前断点行。我们可以改为F10单步走线。当高亮跳转到下一行时,响应就有内容了,如下:
  
  同样的方法,我们也可以在监控框中添加更多的变量,比如sHtml,因为此时响应已经有数据了,但是这个数据只是一个对象。添加 sHtml 后,我们可以通过 F10 单步执行我们的代码对信息进行解码以获得人类可读的内容:
  
  对比响应,我们可以在 sHtml 的值中看到熟悉的 html 源码。下一步是解释这个源代码来分离我们需要的信息。
  第二步,在得到的网页文件中(也就是刚刚得到的sHtml变量),我们可以使用“美汤”进一步分析,得到准确的内容。
  
  ptnTitle 是我们定义的用于获取电影名称的正则表达式。sHtml文本内容由BeautifulSoup的html解析器解析,然后解析结果使用find_all方法将所有class为item的div分隔开形成一个list,通过for循环出每个list中的元素,特别注意参数中的class_=”item”,其中class后面有下划线,主要目的是表示class属性,否则会报错,因为class这个词在python语言中是保留关键字。
  然后,在获取到item中的所有信息后,我们需要通过之前定义的正则表达式来精确匹配我们的电影名称。
  得到片名后,还需要做一些处理,防止电影名出现一些不想要的字符串,比如名字开头和结尾多余的空格,名字中可能出现的斜线“/”。因为电影名除了中文名外可能还收录其他外文名,比如英文、日文等,所以我们需要做出判断,可以把中文名和外文名一起取出来,如果没有外文名,我们will 表示为空。
  写完之后,可以再次开始调试,看看是不是我们需要的结果。同理,是否可以正常获取本页所有电影名。
  通过调试我们可以看到,通过查看程序最后的dataList列表变量,我们得到了第一页所有电影的名字。
  
  既然可以成功获取到电影名,那我就可以用同样的方法获取一个页面上所有电影的其他信息了,比如电影的详细介绍,评分,评分人数,导演等。您可以看到网页上的所有信息以及相应的信息超链接。
  项目源码可通过微信扫描下方二维码关注查看历史文章,也可提前获取关注文章。

vba 网页数据抓取(我学习网抓的过程,以前完全不了解网抓技术)

网站优化优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-03-06 11:01 • 来自相关话题

  vba 网页数据抓取(我学习网抓的过程,以前完全不了解网抓技术)
  “来源:|米宏办公室ID:mihoffice” 我的目标:让中国大学生在走出校门的那一刻,就已经掌握了这些办公技能,让职场人士高效利用办公服务。
  支持我,为自己加油!
  怎么说呢,如果能掌握VBA的精髓,学起来也没那么复杂。
  跟大家分享一下学习网页抓取的过程。之前对VBA网页抓取技术一窍不通,今天抽空研究了一下。虽然还有很多不明白的地方,但我大概知道如何进一步学习了。
  之前写过一篇文章文章,是PowerQuery技术抓取的网页数据。你可以阅读它:“网站将多页数据导入Excel,太棒了!
  ”今天我们用VBA代码来抓取以下网页中的数据:很多人看到看不懂的代码就会一头雾水。其实只要仔细分析一下,你就会觉得没那么复杂,只要你知道VBA,本质就是用代码来操作对象。你永远学不会对象,所以遇到不熟悉的对象也不用害怕,套路大同小异!
  一开始在一个网站上看了一篇关于网络爬虫的文章文章:最终代码如下: 然后文章说可以上传到网站@ > 数据被抓到了,搞得我一头雾水。乍一看,文章 并不完整。后来找到了原链接,是老外写的文章,但也是不完整的。 .
  但是上面的文章让我明白了,其实网页抓取使用了两个对象:Microsoft HTML Object Library和Microsoft Internet Controls,就像当时学习字典一样,如果你不想创建对象直接用代码,那么在声明对象变量之前应该先绑定两个对象,这就是所谓的早期引用。
  我从上面代码得到的信息是:首先根据URL获取网页文档,文档收录很多内容,文档是一个对象,可以使用getElementsByTagName()函数提取这个对象的表,提取出来的表也是一个对象,其他的不清楚。
  首先根据URL获取web文档doc,然后使用doc.getElementsByTagName("table")获取doc中的表格。里面不一定只有一个表,所以用索引来指定是哪张表,表收录行,每行收录单元格,循环遍历表中每一行的每个单元格,单元格的innerText属性为单元格中的值,类似于 Excel 中单元格的 Value 属性。
  于是根据猫和虎,我处理了如下代码: 测试完全正确: 然后看到黑图中的代码使用了后期绑定,于是学习了后期绑定的写法,改了代码:测试也很完美。 查看全部

  vba 网页数据抓取(我学习网抓的过程,以前完全不了解网抓技术)
  “来源:|米宏办公室ID:mihoffice” 我的目标:让中国大学生在走出校门的那一刻,就已经掌握了这些办公技能,让职场人士高效利用办公服务。
  支持我,为自己加油!
  怎么说呢,如果能掌握VBA的精髓,学起来也没那么复杂。
  跟大家分享一下学习网页抓取的过程。之前对VBA网页抓取技术一窍不通,今天抽空研究了一下。虽然还有很多不明白的地方,但我大概知道如何进一步学习了。
  之前写过一篇文章文章,是PowerQuery技术抓取的网页数据。你可以阅读它:“网站将多页数据导入Excel,太棒了!
  ”今天我们用VBA代码来抓取以下网页中的数据:很多人看到看不懂的代码就会一头雾水。其实只要仔细分析一下,你就会觉得没那么复杂,只要你知道VBA,本质就是用代码来操作对象。你永远学不会对象,所以遇到不熟悉的对象也不用害怕,套路大同小异!
  一开始在一个网站上看了一篇关于网络爬虫的文章文章:最终代码如下: 然后文章说可以上传到网站@ > 数据被抓到了,搞得我一头雾水。乍一看,文章 并不完整。后来找到了原链接,是老外写的文章,但也是不完整的。 .
  但是上面的文章让我明白了,其实网页抓取使用了两个对象:Microsoft HTML Object Library和Microsoft Internet Controls,就像当时学习字典一样,如果你不想创建对象直接用代码,那么在声明对象变量之前应该先绑定两个对象,这就是所谓的早期引用。
  我从上面代码得到的信息是:首先根据URL获取网页文档,文档收录很多内容,文档是一个对象,可以使用getElementsByTagName()函数提取这个对象的表,提取出来的表也是一个对象,其他的不清楚。
  首先根据URL获取web文档doc,然后使用doc.getElementsByTagName("table")获取doc中的表格。里面不一定只有一个表,所以用索引来指定是哪张表,表收录行,每行收录单元格,循环遍历表中每一行的每个单元格,单元格的innerText属性为单元格中的值,类似于 Excel 中单元格的 Value 属性。
  于是根据猫和虎,我处理了如下代码: 测试完全正确: 然后看到黑图中的代码使用了后期绑定,于是学习了后期绑定的写法,改了代码:测试也很完美。

vba 网页数据抓取(第四节将VBA数组写入工作表时转置(Transpose)的利用)

网站优化优采云 发表了文章 • 0 个评论 • 86 次浏览 • 2022-03-04 20:11 • 来自相关话题

  vba 网页数据抓取(第四节将VBA数组写入工作表时转置(Transpose)的利用)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据的读取、回填和搜索”。
  第四节将VBA数组写入工作表时使用转置(Transpose)
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 用一维数组回填工作表时的转置(Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理! 查看全部

  vba 网页数据抓取(第四节将VBA数组写入工作表时转置(Transpose)的利用)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据的读取、回填和搜索”。
  第四节将VBA数组写入工作表时使用转置(Transpose)
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 用一维数组回填工作表时的转置(Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!

vba 网页数据抓取(这套教程:EXCEL工作表数据的读取、查找的内容)

网站优化优采云 发表了文章 • 0 个评论 • 103 次浏览 • 2022-03-04 20:06 • 来自相关话题

  vba 网页数据抓取(这套教程:EXCEL工作表数据的读取、查找的内容)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据读取、回填和查找”。
  第四节在将 VBA 数组写入工作表时使用转置
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 一维数组回填工作表时的转置 (Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理! 查看全部

  vba 网页数据抓取(这套教程:EXCEL工作表数据的读取、查找的内容)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据读取、回填和查找”。
  第四节在将 VBA 数组写入工作表时使用转置
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 一维数组回填工作表时的转置 (Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!

vba 网页数据抓取(,信息获取与处理中的部分内容,这套数组存储数据 )

网站优化优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2022-03-04 20:04 • 来自相关话题

  vba 网页数据抓取(,信息获取与处理中的部分内容,这套数组存储数据
)
  大家好,最近上线的内容是《VBA信息获取与处理》的一部分。本套教程面向中高级人员,覆盖面更广,实用性更强。现在内容是第四期《Excel工作表数据的读取、回填和查找》。本期我们讲解工作表数据的处理。对于VBA,我给的定位是“自动化处理个人小数据的强大工具” ”。对于大部分朋友来说,VBA的使用是和EXCEL相关联的。很多代码也是用来处理EXCEL或相关的各种数据,而工作表作为与用户交互的对象存在,那么如何查找和读取工作表的数据是一个非常关键的话题。我们将主要讨论这个问题。
  第1节工作表数据与数组的传输比较
  工作表单元格和 VBA 变量之间的数据传输是一种经常应用的操作。此操作比其他操作花费更多时间,因此我们的原则是将此操作保持在最少的次数。在单个操作(而不是单个单元格操作)中将数据传递到数组,或将数组数据传递到工作表,可以大大提高 Excel 应用程序的性能。一般规则是:如果需要对 VBA 中的数据进行大量计算,则应将工作表中的所有值转移到数组中,对数组进行计算,然后将可能被利用的数据回填到工作表中。数组数据。这样的操作将工作表和 VBA 之间的传输次数保持在最低限度。例如,一次将 100 个数组数据传输到工作表比传输 100 次、一次一个数据值要高效得多。我们在VBA中处理数据的时候,一般有三个选项可以选择和使用,一个是将数据存储在数组中,另一个是将数据存储在字典中,第三个不是在内存中处理,而是读取并直接在工作表中处理。
  1
  将工作表数据存储在数组中,在内存中处理数据
  我们先解释一下上面的第一种方案,就是将工作表数据存储在一个数组中,然后在内存中处理数据。为了验证处理的效果,我们在worksheet中给出2000条数据,然后先将数据读入数组,再计算数组中的和。我们来看下面的代码: Sub MYNZ() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1:A2000") MYSUM = 0 For R = 1 To UBound(Arr, 1) MYSUM = MYSUM + Arr(R,​​ 1) Next t2= Timer - t MsgBox "总和为:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  这些代码对于中级以上的朋友来说非常容易理解,只是思路问题。代码不再解释。看看下面的结果:
  
  运行结果:
  
  2
  将工作表数据存储在字典中并在内存中处理数据
  我们来解释一下上面的第二种方案,即将工作表数据存储在字典中,然后在内存中处理数据。为了验证处理的效果,我们在工作表中也给出了相同的 200 0。然后先将数据读入字典,然后求和,我们看下面的代码: Sub MYNZA() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1: A2000") Set myDic = CreateObject("scripting.dictionary") For I = 1 To UBound(Arr) myDic(I)= Arr(I, 1) '初始化字典 MYSUM= MYSUM + myDic(I ) Next I t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  代码运行结果:
  
  3
  直接在工作表中操作数据
  最后我们来解释一下上面的第三种方案,直接在工作表中处理数据。为了验证处理的效果,我们也在worksheet中给出了同样的2000条数据,然后直接在worksheet中对这些数据求和,我们看下面的代码: Sub MYNZB() t = Timer I = 1 Sheets ("SHEET1").Select MYSUM = 0 Do While Cells(I, 1) "" MYSUM = MYSUM + Cells(I, 1) I = I + 1 Loop t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, " 0.00000") & "seconds" 结束子代码截图:
  
  运行代码:
  
  我们看一下数据的运行结果,可以看出运行的效率,但要提醒大家注意:①不要盲目追求效率,注意看懂我的文章文章@ > 《VBA程序运行时间优化》和视觉效果。” ②每个方案都有自己的使用价值,比如字典排序就是一个很有效的方法。回到本节知识点:有哪些解决方案可以实现工作表和 VBA 之间的数据传输?各自是什么?根据自己的经验仔细了解每个选项的优缺点。此主题的参考程序文件:00 4 工作表。XLSM VBA 是使用 Office 的有效手段实现自己的小型办公自动化,这就是我对VBA应用的定义。在新办公软件取代OFFICE之前,谁能把数据处理做到极致,谁才是王道。其中,技能的巅峰莫过于VBA !学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。 “水无争,万物皆好。”学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。
  无论遇到什么,都是一道风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。 20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专用教程。第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具,教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级人员学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段。第四套:VBA代码解决方案视频,是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  Set 5:VBA中类的解释和利用这是一门高级课程,解释了类的空性和物理性的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息功能等。如有需要,可以微信:NZ9668 学习的过程也是修心的过程,培养平和的心态。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的转移。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序是逐渐加深,逐渐学会的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!分享成果,为正能量欢欣鼓舞
  更多相关阅读
   查看全部

  vba 网页数据抓取(,信息获取与处理中的部分内容,这套数组存储数据
)
  大家好,最近上线的内容是《VBA信息获取与处理》的一部分。本套教程面向中高级人员,覆盖面更广,实用性更强。现在内容是第四期《Excel工作表数据的读取、回填和查找》。本期我们讲解工作表数据的处理。对于VBA,我给的定位是“自动化处理个人小数据的强大工具” ”。对于大部分朋友来说,VBA的使用是和EXCEL相关联的。很多代码也是用来处理EXCEL或相关的各种数据,而工作表作为与用户交互的对象存在,那么如何查找和读取工作表的数据是一个非常关键的话题。我们将主要讨论这个问题。
  第1节工作表数据与数组的传输比较
  工作表单元格和 VBA 变量之间的数据传输是一种经常应用的操作。此操作比其他操作花费更多时间,因此我们的原则是将此操作保持在最少的次数。在单个操作(而不是单个单元格操作)中将数据传递到数组,或将数组数据传递到工作表,可以大大提高 Excel 应用程序的性能。一般规则是:如果需要对 VBA 中的数据进行大量计算,则应将工作表中的所有值转移到数组中,对数组进行计算,然后将可能被利用的数据回填到工作表中。数组数据。这样的操作将工作表和 VBA 之间的传输次数保持在最低限度。例如,一次将 100 个数组数据传输到工作表比传输 100 次、一次一个数据值要高效得多。我们在VBA中处理数据的时候,一般有三个选项可以选择和使用,一个是将数据存储在数组中,另一个是将数据存储在字典中,第三个不是在内存中处理,而是读取并直接在工作表中处理。
  1
  将工作表数据存储在数组中,在内存中处理数据
  我们先解释一下上面的第一种方案,就是将工作表数据存储在一个数组中,然后在内存中处理数据。为了验证处理的效果,我们在worksheet中给出2000条数据,然后先将数据读入数组,再计算数组中的和。我们来看下面的代码: Sub MYNZ() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1:A2000") MYSUM = 0 For R = 1 To UBound(Arr, 1) MYSUM = MYSUM + Arr(R,​​ 1) Next t2= Timer - t MsgBox "总和为:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  这些代码对于中级以上的朋友来说非常容易理解,只是思路问题。代码不再解释。看看下面的结果:
  
  运行结果:
  
  2
  将工作表数据存储在字典中并在内存中处理数据
  我们来解释一下上面的第二种方案,即将工作表数据存储在字典中,然后在内存中处理数据。为了验证处理的效果,我们在工作表中也给出了相同的 200 0。然后先将数据读入字典,然后求和,我们看下面的代码: Sub MYNZA() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1: A2000") Set myDic = CreateObject("scripting.dictionary") For I = 1 To UBound(Arr) myDic(I)= Arr(I, 1) '初始化字典 MYSUM= MYSUM + myDic(I ) Next I t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  代码运行结果:
  
  3
  直接在工作表中操作数据
  最后我们来解释一下上面的第三种方案,直接在工作表中处理数据。为了验证处理的效果,我们也在worksheet中给出了同样的2000条数据,然后直接在worksheet中对这些数据求和,我们看下面的代码: Sub MYNZB() t = Timer I = 1 Sheets ("SHEET1").Select MYSUM = 0 Do While Cells(I, 1) "" MYSUM = MYSUM + Cells(I, 1) I = I + 1 Loop t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, " 0.00000") & "seconds" 结束子代码截图:
  
  运行代码:
  
  我们看一下数据的运行结果,可以看出运行的效率,但要提醒大家注意:①不要盲目追求效率,注意看懂我的文章文章@ > 《VBA程序运行时间优化》和视觉效果。” ②每个方案都有自己的使用价值,比如字典排序就是一个很有效的方法。回到本节知识点:有哪些解决方案可以实现工作表和 VBA 之间的数据传输?各自是什么?根据自己的经验仔细了解每个选项的优缺点。此主题的参考程序文件:00 4 工作表。XLSM VBA 是使用 Office 的有效手段实现自己的小型办公自动化,这就是我对VBA应用的定义。在新办公软件取代OFFICE之前,谁能把数据处理做到极致,谁才是王道。其中,技能的巅峰莫过于VBA !学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。 “水无争,万物皆好。”学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。
  无论遇到什么,都是一道风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。 20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专用教程。第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具,教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级人员学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段。第四套:VBA代码解决方案视频,是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  Set 5:VBA中类的解释和利用这是一门高级课程,解释了类的空性和物理性的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息功能等。如有需要,可以微信:NZ9668 学习的过程也是修心的过程,培养平和的心态。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的转移。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序是逐渐加深,逐渐学会的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!分享成果,为正能量欢欣鼓舞
  更多相关阅读
  

vba 网页数据抓取(一下专题“利用IE抓取网络数据”的第三节(图))

网站优化优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2022-02-24 15:02 • 来自相关话题

  vba 网页数据抓取(一下专题“利用IE抓取网络数据”的第三节(图))
  大家好,今天我们来讲解一下《VBA信息获取与处理》教程第九题《使用IE采集网络数据》的第三节,《使用IE采集非禁股数据》,这个话题是非常有用的知识点,希望你能掌握。第四节利用IE获取非禁股数据。大家好,本次讲座是关于使用IE抓取东方财富的非禁股数据。使用方法与上一讲基本类似。目的仍然是向您展示 VBA。在这个例子中,我们将介绍一个实际场景供您选择和使用。实战场景:非禁股的概念我不是很清楚,但是很多玩股票的朋友都关注过。他们经常每天查看解禁股票的股票数据,以等待某种信息,并要求使用IE提取某个解禁股票的网站股票信息,并将这些数据放入工作表中替代观看。选择的网站是:即东方财富网的数据。1.使用IE抓取股票信息的思路分析为了实现上述场景,我们来看看上面提供的URL提供的网页信息:
  
  在上面的网页中,我要提取的是红框框起来的表格的数据。我们来分析一下思路:首先,我们需要创建一个IE对象,然后提取网页文档,提取网页文档上第三个表的数据,即Can。抽取表格数据时,可以模拟真实工作表的行列循环,依次抽取数据。在我之前的解释中,我提到 Rows.Length 是指网页的数量,而 Cells(j).innertext 是指单元格的内容。写代码的时候要注意这两点。另外,在爬取web文档的表格时,我们使用了all.tags("table")(3)的方法,在前面的解释中很模糊但是很有用。all.tags("tag name "): 返回此类标签的元素集。这里选择序号(3)指的是序号为3的表的数据。对于innertext的概念,需要注意理解,innerText指的是标签之间的明文信息。数据被提取,内存被释放,这就是我提出的方案。 2、利用IE实现股票信息抓取和解锁的代码为了实现上面的思路,我给出了如下代码: Sub myNZB() '使用 IE 抓取和解锁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象 Sheets("SHEET3" ).Select Cells.ClearComments WithIE .Visible= True ' Show it.navigate"" '加载页面 DoUntil .readystate = 4 '
  2).Visible = True 'Show it.navigate"" '加载页面 DoUntil .readystate = 4 '等待页面完成加载 DoEvents Loop 上面的代码使浏览器可见并加载URL,直到加载完成完成,这里的DoEvents是为了避免软崩溃的现象。3) Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量4) Set tb = dmt.all.tags("table")(3) '通过index No. 捕获表对象5)For i = 0 To tb.Rows.Length - 1 '迭代其每一行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '迭代每一行每个单元格的行 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格 Next Next 将表格的数据提取到工作表中。6) Set IE = Nothing Setdmt = Nothing Set tb = Nothing 回收内存。对于回收内存的操作,建议大家使用。在数据库、字典、搜索等案例中也有类似的操作。代码截图:
  
  通过上面的代码,我们就可以完成我们的想法了。3 使用IE实现捕获和解锁股票信息的效果 当我们点击运行按钮,如图中箭头所示,程序开始运行,网页数据被捕获到工作表中。当然,在实际应用中,用户可以根据自己的实际需要,将爬取工作完成到指定位置。
  
  这验证了我们思考的正确性。回到本节知识点:如何提取页面文档中指定表的数据?本节参考:009 worksheet.xlsm
  
  积木编程思想:在我的系列丛书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,很有必要采用这个方案。其主要内涵: 1、不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。2 建立自己的“积木库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA应用定义 VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程: 第一套:VBA代码解法是对VBA中各个知识点的讲解。,教程共有147讲,涵盖了大部分初学者必备的VBA知识点;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具。教程详细介绍了使用ADO连接ACCDB和EXCEL操作的方法和例子,适合中级学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。第五组:VBA中类的解释与利用 这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA网络数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等→2→6→5或4→3→2→6→5。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云孤单。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面提到的教程是我许多经验的传递。“水无争,万物皆好。” 学习也是如此,知道自己需要什么,不要挤在世界的一小块地方,认为你是天堂,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。分享成果,收获正能量 查看全部

  vba 网页数据抓取(一下专题“利用IE抓取网络数据”的第三节(图))
  大家好,今天我们来讲解一下《VBA信息获取与处理》教程第九题《使用IE采集网络数据》的第三节,《使用IE采集非禁股数据》,这个话题是非常有用的知识点,希望你能掌握。第四节利用IE获取非禁股数据。大家好,本次讲座是关于使用IE抓取东方财富的非禁股数据。使用方法与上一讲基本类似。目的仍然是向您展示 VBA。在这个例子中,我们将介绍一个实际场景供您选择和使用。实战场景:非禁股的概念我不是很清楚,但是很多玩股票的朋友都关注过。他们经常每天查看解禁股票的股票数据,以等待某种信息,并要求使用IE提取某个解禁股票的网站股票信息,并将这些数据放入工作表中替代观看。选择的网站是:即东方财富网的数据。1.使用IE抓取股票信息的思路分析为了实现上述场景,我们来看看上面提供的URL提供的网页信息:
  
  在上面的网页中,我要提取的是红框框起来的表格的数据。我们来分析一下思路:首先,我们需要创建一个IE对象,然后提取网页文档,提取网页文档上第三个表的数据,即Can。抽取表格数据时,可以模拟真实工作表的行列循环,依次抽取数据。在我之前的解释中,我提到 Rows.Length 是指网页的数量,而 Cells(j).innertext 是指单元格的内容。写代码的时候要注意这两点。另外,在爬取web文档的表格时,我们使用了all.tags("table")(3)的方法,在前面的解释中很模糊但是很有用。all.tags("tag name "): 返回此类标签的元素集。这里选择序号(3)指的是序号为3的表的数据。对于innertext的概念,需要注意理解,innerText指的是标签之间的明文信息。数据被提取,内存被释放,这就是我提出的方案。 2、利用IE实现股票信息抓取和解锁的代码为了实现上面的思路,我给出了如下代码: Sub myNZB() '使用 IE 抓取和解锁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象 Sheets("SHEET3" ).Select Cells.ClearComments WithIE .Visible= True ' Show it.navigate"" '加载页面 DoUntil .readystate = 4 '
  2).Visible = True 'Show it.navigate"" '加载页面 DoUntil .readystate = 4 '等待页面完成加载 DoEvents Loop 上面的代码使浏览器可见并加载URL,直到加载完成完成,这里的DoEvents是为了避免软崩溃的现象。3) Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量4) Set tb = dmt.all.tags("table")(3) '通过index No. 捕获表对象5)For i = 0 To tb.Rows.Length - 1 '迭代其每一行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '迭代每一行每个单元格的行 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格 Next Next 将表格的数据提取到工作表中。6) Set IE = Nothing Setdmt = Nothing Set tb = Nothing 回收内存。对于回收内存的操作,建议大家使用。在数据库、字典、搜索等案例中也有类似的操作。代码截图:
  
  通过上面的代码,我们就可以完成我们的想法了。3 使用IE实现捕获和解锁股票信息的效果 当我们点击运行按钮,如图中箭头所示,程序开始运行,网页数据被捕获到工作表中。当然,在实际应用中,用户可以根据自己的实际需要,将爬取工作完成到指定位置。
  
  这验证了我们思考的正确性。回到本节知识点:如何提取页面文档中指定表的数据?本节参考:009 worksheet.xlsm
  
  积木编程思想:在我的系列丛书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,很有必要采用这个方案。其主要内涵: 1、不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。2 建立自己的“积木库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA应用定义 VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程: 第一套:VBA代码解法是对VBA中各个知识点的讲解。,教程共有147讲,涵盖了大部分初学者必备的VBA知识点;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具。教程详细介绍了使用ADO连接ACCDB和EXCEL操作的方法和例子,适合中级学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。第五组:VBA中类的解释与利用 这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA网络数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等→2→6→5或4→3→2→6→5。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云孤单。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面提到的教程是我许多经验的传递。“水无争,万物皆好。” 学习也是如此,知道自己需要什么,不要挤在世界的一小块地方,认为你是天堂,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。分享成果,收获正能量

vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))

网站优化优采云 发表了文章 • 0 个评论 • 149 次浏览 • 2022-02-23 19:13 • 来自相关话题

  vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))
  1、简介
  在 Python 网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类 gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第一部分,尝试使用xslt方法提取静态网页内容并一次性转换为xml格式。
  2、使用lxml库提取网页内容
  lxml是python的一个库,可以快速灵活地处理XML。它支持 XML 路径语言 (XPath) 和可扩展样式表语言转换 (XSLT),并实现通用的 ElementTree API。
  这2天,我在python中测试了通过xslt提取网页内容,记录如下:
  2.1、抓住目标
  假设要提取jisoke官网老论坛的帖子标题和回复数,如下图,需要提取整个列表并保存为xml格式
  
  2.2、源码1:只抓取当前页面,结果显示在控制台
  Python的优势在于它可以用少量的代码解决一个问题。请注意,以下代码看起来很长。其实python函数调用的并不多,一个xslt脚本占用了大量的空间。在这段代码中,只有它只是一个长字符串。至于为什么选择 xslt 而不是离散的 xpath 或者令人头疼的正则表达式,请参考《Python Instant Web Crawler Project Startup Instructions》,我们希望通过这种架构,程序员的时间节省一半以上。
  可以复制并运行以下代码(windows10下测试,python3.2):
  
from urllib import request
from lxml import etree
url="http://www.gooseeker.com/cn/forum/7"
conn = request.urlopen(url)

doc = etree.HTML(conn.read())

xslt_root = etree.XML("""\

































""")

transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(result_tree)
  源码可以从文末的 GitHub 源码下载。
  2.3、获取结果
  得到的爬取结果如下:
  
  2.4、源码2:翻转取,并将结果保存到文件
  我们对2.2的代码进行了进一步的修改,增加了翻页功能来获取和保存结果文件。代码如下:
  
from urllib import request
from lxml import etree
import time

xslt_root = etree.XML("""\

































""")

baseurl = "http://www.gooseeker.com/cn/forum/7"
basefilebegin = "jsk_bbs_"
basefileend = ".xml"
count = 1
while (count < 12):
url = baseurl + "?page=" + str(count)
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(str(result_tree))
file_obj = open(basefilebegin+str(count)+basefileend,&#39;w&#39;,encoding=&#39;UTF-8&#39;)
file_obj.write(str(result_tree))
file_obj.close()
count += 1
time.sleep(2)
  我们添加了编写文件的代码,还添加了一个循环来构造每次翻页的URL,但是如果在翻页过程中URL始终相同怎么办?实际上,这是动态的网页内容,下面将进行讨论。
  3、总结
  这是开源Python通用爬虫项目的验证过程。在爬虫框架中,其他部分很容易通用化,也就是很难将网页内容提取并转化为结构化操作,我们称之为提取器。但是在GooSeeker的可视化抽取规则生成器MS的帮助下,抽取器的生成过程会变得非常方便,并且插入可以标准化,从而实现一个万能爬虫。后续文章会专门讲解MS。平台配合Python的具体方法。
  4、继续阅读
  本文介绍的方法通常用于爬取静态网页内容,也就是所谓的html文档的内容。目前很多网站内容都是通过javascript动态生成的。一开始html是没有这个内容的,通过后会加载。如果添加了方法,那么需要用到动态技术,请阅读《Python爬虫使用Selenium+PhantomJS爬取Ajax和动态HTML内容》
  5、Jisooke GooSeeker开源代码下载源码
  1.GooSeeker开源Python网络爬虫GitHub源码
  6、文档修改历史
  2016-05-26:V2.0,增加文字说明;添加了线程的代码
  2016-05-29:V2.1、添加最后一章源码下载源码
  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU源码库。
  注:相关教程知识请移步python教程频道。 查看全部

  vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))
  1、简介
  在 Python 网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类 gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第一部分,尝试使用xslt方法提取静态网页内容并一次性转换为xml格式。
  2、使用lxml库提取网页内容
  lxml是python的一个库,可以快速灵活地处理XML。它支持 XML 路径语言 (XPath) 和可扩展样式表语言转换 (XSLT),并实现通用的 ElementTree API。
  这2天,我在python中测试了通过xslt提取网页内容,记录如下:
  2.1、抓住目标
  假设要提取jisoke官网老论坛的帖子标题和回复数,如下图,需要提取整个列表并保存为xml格式
  
  2.2、源码1:只抓取当前页面,结果显示在控制台
  Python的优势在于它可以用少量的代码解决一个问题。请注意,以下代码看起来很长。其实python函数调用的并不多,一个xslt脚本占用了大量的空间。在这段代码中,只有它只是一个长字符串。至于为什么选择 xslt 而不是离散的 xpath 或者令人头疼的正则表达式,请参考《Python Instant Web Crawler Project Startup Instructions》,我们希望通过这种架构,程序员的时间节省一半以上。
  可以复制并运行以下代码(windows10下测试,python3.2):
  
from urllib import request
from lxml import etree
url="http://www.gooseeker.com/cn/forum/7"
conn = request.urlopen(url)

doc = etree.HTML(conn.read())

xslt_root = etree.XML("""\

































""")

transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(result_tree)
  源码可以从文末的 GitHub 源码下载。
  2.3、获取结果
  得到的爬取结果如下:
  
  2.4、源码2:翻转取,并将结果保存到文件
  我们对2.2的代码进行了进一步的修改,增加了翻页功能来获取和保存结果文件。代码如下:
  
from urllib import request
from lxml import etree
import time

xslt_root = etree.XML("""\

































""")

baseurl = "http://www.gooseeker.com/cn/forum/7"
basefilebegin = "jsk_bbs_"
basefileend = ".xml"
count = 1
while (count < 12):
url = baseurl + "?page=" + str(count)
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(str(result_tree))
file_obj = open(basefilebegin+str(count)+basefileend,&#39;w&#39;,encoding=&#39;UTF-8&#39;)
file_obj.write(str(result_tree))
file_obj.close()
count += 1
time.sleep(2)
  我们添加了编写文件的代码,还添加了一个循环来构造每次翻页的URL,但是如果在翻页过程中URL始终相同怎么办?实际上,这是动态的网页内容,下面将进行讨论。
  3、总结
  这是开源Python通用爬虫项目的验证过程。在爬虫框架中,其他部分很容易通用化,也就是很难将网页内容提取并转化为结构化操作,我们称之为提取器。但是在GooSeeker的可视化抽取规则生成器MS的帮助下,抽取器的生成过程会变得非常方便,并且插入可以标准化,从而实现一个万能爬虫。后续文章会专门讲解MS。平台配合Python的具体方法。
  4、继续阅读
  本文介绍的方法通常用于爬取静态网页内容,也就是所谓的html文档的内容。目前很多网站内容都是通过javascript动态生成的。一开始html是没有这个内容的,通过后会加载。如果添加了方法,那么需要用到动态技术,请阅读《Python爬虫使用Selenium+PhantomJS爬取Ajax和动态HTML内容》
  5、Jisooke GooSeeker开源代码下载源码
  1.GooSeeker开源Python网络爬虫GitHub源码
  6、文档修改历史
  2016-05-26:V2.0,增加文字说明;添加了线程的代码
  2016-05-29:V2.1、添加最后一章源码下载源码
  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU源码库。
  注:相关教程知识请移步python教程频道。

vba 网页数据抓取(我正在寻找一种从Word文件中提取/抓取数据到数据库的方法)

网站优化优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2022-02-15 08:15 • 来自相关话题

  vba 网页数据抓取(我正在寻找一种从Word文件中提取/抓取数据到数据库的方法)
  我正在寻找一种从 Word 文件中提取/抓取数据到数据库的方法。我们将客户会议记录记录在 MS Word 文件中的公司程序很大程度上是由于历史和惯性造成的。我希望能够将这些分钟中的操作项提取到数据库中,以便我们可以从 Web 界面访问它们,将它们转换为任务并在完成后更新它们。这是最好的方法:从 Word 中的 VBA 宏创建 CSV 并上传到数据库?Word中的VBA宏通过win32com的Python脚本与VBA连接(如何从VBA连接到MySQL?)然后上传到数据库?最后一个对我很有吸引力,因为 Web 界面是用 Django 构建的,但我从未使用过 win32com 或尝试从 python 脚本编写 Word。编辑:我已经开始使用 VBA 来提取文本,因为它使使用 Word 对象模型更容易一些。一世' 我遇到了一个问题 - 所有文本都在表格中,当我从我想要的 CELLS 中拉出字符串时,我在每个字符串的末尾得到一个奇怪的小方形字符。我的代码如下所示:
  sFile = "D:\temp\output.txt"
fnum = FreeFile
Open sFile For Output As #fnum
num_rows = Application.ActiveDocument.Tables(2).Rows.Count
For n = 1 To num_rows
Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text
Assign = Application.ActiveDocument.Tables(2).Cell(n, 3).Range.Text
Target = Application.ActiveDocument.Tables(2).Cell(n, 4).Range.Text
If Target = "" Then
ExportText = ""
Else
ExportText = Descr & Chr(44) & Assign & Chr(44) & _
Target & Chr(13) & Chr(10)
Print #fnum, ExportText
End If
Next n
Close #fnum
  小控制字符框是干什么用的?什么类型的字符代码来自 Word? 查看全部

  vba 网页数据抓取(我正在寻找一种从Word文件中提取/抓取数据到数据库的方法)
  我正在寻找一种从 Word 文件中提取/抓取数据到数据库的方法。我们将客户会议记录记录在 MS Word 文件中的公司程序很大程度上是由于历史和惯性造成的。我希望能够将这些分钟中的操作项提取到数据库中,以便我们可以从 Web 界面访问它们,将它们转换为任务并在完成后更新它们。这是最好的方法:从 Word 中的 VBA 宏创建 CSV 并上传到数据库?Word中的VBA宏通过win32com的Python脚本与VBA连接(如何从VBA连接到MySQL?)然后上传到数据库?最后一个对我很有吸引力,因为 Web 界面是用 Django 构建的,但我从未使用过 win32com 或尝试从 python 脚本编写 Word。编辑:我已经开始使用 VBA 来提取文本,因为它使使用 Word 对象模型更容易一些。一世' 我遇到了一个问题 - 所有文本都在表格中,当我从我想要的 CELLS 中拉出字符串时,我在每个字符串的末尾得到一个奇怪的小方形字符。我的代码如下所示:
  sFile = "D:\temp\output.txt"
fnum = FreeFile
Open sFile For Output As #fnum
num_rows = Application.ActiveDocument.Tables(2).Rows.Count
For n = 1 To num_rows
Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text
Assign = Application.ActiveDocument.Tables(2).Cell(n, 3).Range.Text
Target = Application.ActiveDocument.Tables(2).Cell(n, 4).Range.Text
If Target = "" Then
ExportText = ""
Else
ExportText = Descr & Chr(44) & Assign & Chr(44) & _
Target & Chr(13) & Chr(10)
Print #fnum, ExportText
End If
Next n
Close #fnum
  小控制字符框是干什么用的?什么类型的字符代码来自 Word?

VBA中QueryTables提取股票历史交易信息

网站优化优采云 发表了文章 • 0 个评论 • 180 次浏览 • 2022-07-06 16:49 • 来自相关话题

  VBA中QueryTables提取股票历史交易信息
  【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题十:“利用QueryTables抓取网络数据”:VBA中QueryTables提取股票历史交易信息
  第三节 利用QueryTables提取某支股票历史交易信息数据大家好,这讲讲解的是利用QueryTables实现抓取网页数据的具体应用,在上一讲的讲解中,我们看到QueryTables方法利用起来代码确实是非常简单,实现的效果也是非常好的。这讲我们继续讲解这种方法的利用。这一讲我们将完成提取某支股票历史交易信息的数据。
  实用场景:利用QueryTables,抓取网易财经某支股票的历史交易数据,这里我选择的股票是紫金矿业,抓取2020年第2季度的数据,网易财经网址是:,股票在当今社会即是个人投资的方式,又是经济社会发展的晴雨表,关注的人都非常多,也希望在市场运作中能分析出一套可以用于自己投资理财的数据,但股票有风险,大家还是要小心谨慎,不要被表面的高利所诱惑,我这里只能提供给大家基础数据积累,不涉及股票操作。1 利用QueryTables提取某支股票历史交易信息数据的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先清空一下回填数据的区域,然后用QueryTables.Add方法,在网页上提取序号为4的表的数据即可。提取表数据的时候可以选择一下格式的填充。在利用Add方法进行连接的时候要将年和季节的参数给出,同时回填数据的区域选择A5单元格。为了验证一下网址,我们可以在工作表中的某个单元格中留存一下网址。以备核对。2 利用QueryTables提取某支股票历史交易信息数据的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZA() '获取网易财经股票的价格和信息 DimstrQuery As StringSheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents GPCode= Cells(1, 4).Value myN= Cells(2, 4).Value myJ= Cells(3, 4).Value strQuery= "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ Cells(1,"l") = strQuery WithActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5")) .Name= "history" .RefreshOnFileOpen= False .BackgroundQuery= True .SaveData= True .PreserveFormatting= True .AdjustColumnWidth= False .RefreshPeriod= 0 .WebSelectionType= xlSpecifiedTables .WebFormatting= xlWebFormattingNone .WebTables= "4" .RefreshBackgroundQuery:=False EndWith MsgBox("OK")End Sub
  
  代码的讲解:
  1) Sheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents以上代码清空数据的回填区域,注意第二句的写法。2)GPCode = Cells(1, 4).Value 取得股票的代码3) myN = Cells(2, 4).Value 取得要查询的年4) myJ = Cells(3, 4).Value 取得要查询的季节5)strQuery = "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ以上取得要连接的URL6) Cells(1, "l") = strQuery在工作表的单元格中备份网址以便核对。7)With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))上述代码指定加载网址, 的数据 ,Range("a5")是回填给工作表区域的左上角的单元格。8).Name = "history"
  9).RefreshOnFileOpen = False 如果每次打开工作簿时,数据表高速缓存或查询表自动更新,则为 True。 默认值为 False 。 读取/写入 Boolean。 10).BackgroundQuery = True 是否在后台异步执行,如果查询表的查询是异步执行(在后台执行)的,则为True。11) .SaveData = True 如果将Data数据随工作簿一起保存,则为 True。 如果仅保存数据透视表的定义,则为 False。 读取/写入 Boolean。12) .PreserveFormatting = True 如果将数据前五行的任何常用格式设置应用到查询表的新数据行,则为 True。 未使用的单元格未格式化。 如果将应用到查询表的最新一次自动套用格式应用于新数据行,则属性为 False。 默认值为 True。对于数据库查询表, 默认格式设置为xlSimple 常量。刷新查询表时,将对查询表应用新的自动套用格式样式。 只要 PreserveFormatting 的值为 False,则 AutoFormat(自动套用格式)就会被设置为 None。 因此, 在PreserveFormatting之前设置的任何自动套用格式设置为False , 并且在刷新查询表之前不会生效, 并且生成的查询表不会应用任何格式。
  13) .AdjustColumnWidth = False 如果每次刷新指定的查询表时列宽都会自动调整为最适合的宽度,则为True。 如果每次刷新时列宽不进行自动调整,则为 False。 默认值为 True 。14) .RefreshPeriod = 0 返回或设置两次刷新之间的时间间隔。 读/写 Long。将周期设置为 0(零),则会禁用自动定时刷新,并且等同于将该属性设置为 Null。RefreshPeriod 属性的值可以是从 0 到 32767 的整数。15) .WebSelectionType = xlSpecifiedTables 指定表16) .WebFormatting = xlWebFormattingNone 提取表的数据无格式17) .WebTables = "4" 选择序号为4的表18) .Refresh BackgroundQuery:=False 更新一个查询表数据。Updates an external data range in a QueryTable object.
  上面的各个属性给大家进行了详细的讲解,希望大家能了解。
  代码截图:
  通过上述的代码,就可以完成我们的思路。3 利用QueryTables提取某支股票历史交易信息数据的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。从代码到实现的过程,非常的简洁,代码理解也非常的容易,这给我们的学习和利用带来了方便。
  本节知识点回向:如何利用QueryTables对象各种属性的理解和掌握。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。 查看全部

  VBA中QueryTables提取股票历史交易信息
  【分享成果,随喜正能量】孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题十:“利用QueryTables抓取网络数据”:VBA中QueryTables提取股票历史交易信息
  第三节 利用QueryTables提取某支股票历史交易信息数据大家好,这讲讲解的是利用QueryTables实现抓取网页数据的具体应用,在上一讲的讲解中,我们看到QueryTables方法利用起来代码确实是非常简单,实现的效果也是非常好的。这讲我们继续讲解这种方法的利用。这一讲我们将完成提取某支股票历史交易信息的数据。
  实用场景:利用QueryTables,抓取网易财经某支股票的历史交易数据,这里我选择的股票是紫金矿业,抓取2020年第2季度的数据,网易财经网址是:,股票在当今社会即是个人投资的方式,又是经济社会发展的晴雨表,关注的人都非常多,也希望在市场运作中能分析出一套可以用于自己投资理财的数据,但股票有风险,大家还是要小心谨慎,不要被表面的高利所诱惑,我这里只能提供给大家基础数据积累,不涉及股票操作。1 利用QueryTables提取某支股票历史交易信息数据的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先清空一下回填数据的区域,然后用QueryTables.Add方法,在网页上提取序号为4的表的数据即可。提取表数据的时候可以选择一下格式的填充。在利用Add方法进行连接的时候要将年和季节的参数给出,同时回填数据的区域选择A5单元格。为了验证一下网址,我们可以在工作表中的某个单元格中留存一下网址。以备核对。2 利用QueryTables提取某支股票历史交易信息数据的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZA() '获取网易财经股票的价格和信息 DimstrQuery As StringSheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents GPCode= Cells(1, 4).Value myN= Cells(2, 4).Value myJ= Cells(3, 4).Value strQuery= "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ Cells(1,"l") = strQuery WithActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5")) .Name= "history" .RefreshOnFileOpen= False .BackgroundQuery= True .SaveData= True .PreserveFormatting= True .AdjustColumnWidth= False .RefreshPeriod= 0 .WebSelectionType= xlSpecifiedTables .WebFormatting= xlWebFormattingNone .WebTables= "4" .RefreshBackgroundQuery:=False EndWith MsgBox("OK")End Sub
  
  代码的讲解:
  1) Sheets("Sheet2").SelectActiveSheet.UsedRange.Offset(4).ClearContents以上代码清空数据的回填区域,注意第二句的写法。2)GPCode = Cells(1, 4).Value 取得股票的代码3) myN = Cells(2, 4).Value 取得要查询的年4) myJ = Cells(3, 4).Value 取得要查询的季节5)strQuery = "URL;" & GPCode strQuery= strQuery & ".html?year=" & myN strQuery= strQuery & "&season=" & myJ以上取得要连接的URL6) Cells(1, "l") = strQuery在工作表的单元格中备份网址以便核对。7)With ActiveSheet.QueryTables.Add(Connection:=strQuery, Destination:=Range("A5"))上述代码指定加载网址, 的数据 ,Range("a5")是回填给工作表区域的左上角的单元格。8).Name = "history"
  9).RefreshOnFileOpen = False 如果每次打开工作簿时,数据表高速缓存或查询表自动更新,则为 True。 默认值为 False 。 读取/写入 Boolean。 10).BackgroundQuery = True 是否在后台异步执行,如果查询表的查询是异步执行(在后台执行)的,则为True。11) .SaveData = True 如果将Data数据随工作簿一起保存,则为 True。 如果仅保存数据透视表的定义,则为 False。 读取/写入 Boolean。12) .PreserveFormatting = True 如果将数据前五行的任何常用格式设置应用到查询表的新数据行,则为 True。 未使用的单元格未格式化。 如果将应用到查询表的最新一次自动套用格式应用于新数据行,则属性为 False。 默认值为 True。对于数据库查询表, 默认格式设置为xlSimple 常量。刷新查询表时,将对查询表应用新的自动套用格式样式。 只要 PreserveFormatting 的值为 False,则 AutoFormat(自动套用格式)就会被设置为 None。 因此, 在PreserveFormatting之前设置的任何自动套用格式设置为False , 并且在刷新查询表之前不会生效, 并且生成的查询表不会应用任何格式。
  13) .AdjustColumnWidth = False 如果每次刷新指定的查询表时列宽都会自动调整为最适合的宽度,则为True。 如果每次刷新时列宽不进行自动调整,则为 False。 默认值为 True 。14) .RefreshPeriod = 0 返回或设置两次刷新之间的时间间隔。 读/写 Long。将周期设置为 0(零),则会禁用自动定时刷新,并且等同于将该属性设置为 Null。RefreshPeriod 属性的值可以是从 0 到 32767 的整数。15) .WebSelectionType = xlSpecifiedTables 指定表16) .WebFormatting = xlWebFormattingNone 提取表的数据无格式17) .WebTables = "4" 选择序号为4的表18) .Refresh BackgroundQuery:=False 更新一个查询表数据。Updates an external data range in a QueryTable object.
  上面的各个属性给大家进行了详细的讲解,希望大家能了解。
  代码截图:
  通过上述的代码,就可以完成我们的思路。3 利用QueryTables提取某支股票历史交易信息数据的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。从代码到实现的过程,非常的简洁,代码理解也非常的容易,这给我们的学习和利用带来了方便。
  本节知识点回向:如何利用QueryTables对象各种属性的理解和掌握。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  【分享成果,随喜正能量】识人不必探尽,探尽则多疑;知人不必言尽,言尽则无友;责人不必苛尽,苛尽则众远;敬人不必卑尽,卑尽则无骨;让人不必退尽,退尽则路窄。是人当寻宁静内而不在他处,当一个人的内在是寂静的,自我就会消失。。

VBA抓取解禁股票信息

网站优化优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-06-02 13:05 • 来自相关话题

  VBA抓取解禁股票信息
  【分享成果,随喜正能量】为什么会觉得委屈?因为你只记住了自己的好,还记住了别人的不好。凡事,把对方摆在和你一样的位置,只会让彼此的心灵越来越远,何不多一些宽容,让一些琐碎和怨恨远离我们,让我们的心胸更加开阔。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:VBA抓取解禁股票信息
  
  第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。
  实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。
  2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")
  End Sub
  代码的讲解:
  1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。
  代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  
  
  
  【分享成果,随喜正能量】人生起起落落是常态,谁都会遇到不尽人意的时候,坦然接受所有的不幸,不颓废、不放弃、不抱怨,生活的转机就在前方。。 查看全部

  VBA抓取解禁股票信息
  【分享成果,随喜正能量】为什么会觉得委屈?因为你只记住了自己的好,还记住了别人的不好。凡事,把对方摆在和你一样的位置,只会让彼此的心灵越来越远,何不多一些宽容,让一些琐碎和怨恨远离我们,让我们的心胸更加开阔。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:VBA抓取解禁股票信息
  
  第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。
  实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。
  2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&, j& SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")
  End Sub
  代码的讲解:
  1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。
  代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
  
  
  
  【分享成果,随喜正能量】人生起起落落是常态,谁都会遇到不尽人意的时候,坦然接受所有的不幸,不颓废、不放弃、不抱怨,生活的转机就在前方。。

VBA网页爬虫和多线程指南

网站优化优采云 发表了文章 • 0 个评论 • 97 次浏览 • 2022-05-07 20:45 • 来自相关话题

  VBA网页爬虫和多线程指南
  优点是速度快,灵活,可以实现GET、POST、Header、Cookie等诸多细节。缺点是比Webbrowser麻烦一点,调试不直观。为了方便引用网页中的信息,不妨把XMLhttp的responsetext装进一个HTMLfile对象,就可以像Webbrowser一样检索了。
  2. 解决登录问题
  用Click模拟登录比把用户名、密码写在url里或者send请求来的简单,通用性也更好。尤其是有些网站的表单submit时要执行额外的script,或者登录时要跨域发送登录信息。
  如果遇到跨域登录或者iframe的情况,参照所附代码最后一段:Click之后等待最终的登录返回页面,而不是等待登录页加载完毕。
  如果使用XMLhttp发送登录请求遇到登录问题,建议就不要费力气琢磨什么伪造Cookie了,使用Webbrowser来登录吧,登录后同一个Excel进程里的所有XMLhttp和Webbrowser都会共享到这个登录信息,特别省心。
  使用Set oIE = CreateObject("internetexplorer.application")不能和Webbrowser以及XMLhttp互相共享登录信息,Winhttp似乎也不能。
  3. 利用异步加快速度
  一个一个等待网页返回太慢,所以我们不用同步方式send一个等待一个,而是用异步,一次send一批请求出去,统一等待。初衷当然很好,然而VBA不支持多线程,所以这里的速度提高比较有限,一次发送20个请求大概只能提速2倍。再多似乎没什么用了。nThread值的选择在很大程度上于所爬网站的速度,建议多次测试决定。
  4. 看似不可能的多线程实现
  也许有很多人跟你说过VBA不支持多线程。没错,它确实不支持,用API极其麻烦而且不稳定。但是,Windows操作系统支持多线程,我们就利用这一点来绕开VBA的限制。不光有办法,而且有三种。
  4.1 利用VBScript加Application
  将含有宏的工作簿另存n份,生成n个VBScript脚本文件,每个脚本用Excel.Application对象打开一个工作簿,运行每个工作簿里的VBA爬虫,将爬到的结果统一写回主Excel里。这种方式有两个好处:一是用字符串的VBScript代码比较简洁,二是每个线程都可以利用Webbrowser控件方便地登录。缺点就是打开一批Excel导致系统负担较重。searchWorker过程里创建了一个Excel对象,通过工作簿名称workbookName将爬到的数据写回原工作簿。
  4.2 只用VBScript实现多线程
  有了上一节的示例,很容易就可以构造出合适的VBScript文件,并且在文件里直接抓取数据,代码我就不放了。比起VBScript加Application的方法,只用VBScript拼字符串写起来更麻烦,但程序执行起来非常轻量级,所以如果你要抓取的网站没有复杂的登录过程,又不怕代码麻烦,那么可以考虑用VBScript。示例可以在Excelhero找到,代码相当乱而且长。
  4.3 使用ActiveX EXE实现多线程
  这个有前人写过,优点是资源消耗适中,缺点是需要有Visual Basic环境,实现起来也更复杂,可在excelhome找到。
  5. 总结
  我个人推荐VBScript加Application的多线程方案,通用性更强,而且现在的电脑已经不太在乎多占些内存了。比起本文前面使用XMLhttp批量异步发送的方法,VBS+Application的方案创建8个线程可以提速5倍左右,效率很高。测试电脑是4核心8线程的i7台式机,8G内存。爬虫网抓时,每个WPS ET线程大概占用不到100M内存,机器完全可以承受。
  做爬虫可能会遇到很多问题,比如翻页、动态网页、json解析、保存附件等等。有时为了避免被网站封杀,还要加上一些延时。具体问题只能在抓取过程中各个击破。祝各位好运。
  以上。
  搞定搞不定的老狼 查看全部

  VBA网页爬虫和多线程指南
  优点是速度快,灵活,可以实现GET、POST、Header、Cookie等诸多细节。缺点是比Webbrowser麻烦一点,调试不直观。为了方便引用网页中的信息,不妨把XMLhttp的responsetext装进一个HTMLfile对象,就可以像Webbrowser一样检索了。
  2. 解决登录问题
  用Click模拟登录比把用户名、密码写在url里或者send请求来的简单,通用性也更好。尤其是有些网站的表单submit时要执行额外的script,或者登录时要跨域发送登录信息。
  如果遇到跨域登录或者iframe的情况,参照所附代码最后一段:Click之后等待最终的登录返回页面,而不是等待登录页加载完毕。
  如果使用XMLhttp发送登录请求遇到登录问题,建议就不要费力气琢磨什么伪造Cookie了,使用Webbrowser来登录吧,登录后同一个Excel进程里的所有XMLhttp和Webbrowser都会共享到这个登录信息,特别省心。
  使用Set oIE = CreateObject("internetexplorer.application")不能和Webbrowser以及XMLhttp互相共享登录信息,Winhttp似乎也不能。
  3. 利用异步加快速度
  一个一个等待网页返回太慢,所以我们不用同步方式send一个等待一个,而是用异步,一次send一批请求出去,统一等待。初衷当然很好,然而VBA不支持多线程,所以这里的速度提高比较有限,一次发送20个请求大概只能提速2倍。再多似乎没什么用了。nThread值的选择在很大程度上于所爬网站的速度,建议多次测试决定。
  4. 看似不可能的多线程实现
  也许有很多人跟你说过VBA不支持多线程。没错,它确实不支持,用API极其麻烦而且不稳定。但是,Windows操作系统支持多线程,我们就利用这一点来绕开VBA的限制。不光有办法,而且有三种。
  4.1 利用VBScript加Application
  将含有宏的工作簿另存n份,生成n个VBScript脚本文件,每个脚本用Excel.Application对象打开一个工作簿,运行每个工作簿里的VBA爬虫,将爬到的结果统一写回主Excel里。这种方式有两个好处:一是用字符串的VBScript代码比较简洁,二是每个线程都可以利用Webbrowser控件方便地登录。缺点就是打开一批Excel导致系统负担较重。searchWorker过程里创建了一个Excel对象,通过工作簿名称workbookName将爬到的数据写回原工作簿。
  4.2 只用VBScript实现多线程
  有了上一节的示例,很容易就可以构造出合适的VBScript文件,并且在文件里直接抓取数据,代码我就不放了。比起VBScript加Application的方法,只用VBScript拼字符串写起来更麻烦,但程序执行起来非常轻量级,所以如果你要抓取的网站没有复杂的登录过程,又不怕代码麻烦,那么可以考虑用VBScript。示例可以在Excelhero找到,代码相当乱而且长。
  4.3 使用ActiveX EXE实现多线程
  这个有前人写过,优点是资源消耗适中,缺点是需要有Visual Basic环境,实现起来也更复杂,可在excelhome找到。
  5. 总结
  我个人推荐VBScript加Application的多线程方案,通用性更强,而且现在的电脑已经不太在乎多占些内存了。比起本文前面使用XMLhttp批量异步发送的方法,VBS+Application的方案创建8个线程可以提速5倍左右,效率很高。测试电脑是4核心8线程的i7台式机,8G内存。爬虫网抓时,每个WPS ET线程大概占用不到100M内存,机器完全可以承受。
  做爬虫可能会遇到很多问题,比如翻页、动态网页、json解析、保存附件等等。有时为了避免被网站封杀,还要加上一些延时。具体问题只能在抓取过程中各个击破。祝各位好运。
  以上。
  搞定搞不定的老狼

VBA利用IE,抓取解禁股票数据

网站优化优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2022-05-04 09:00 • 来自相关话题

  VBA利用IE,抓取解禁股票数据
  大家好,我们今日讲解“VBA信息获取与处理”教程中第九个专题“利用IE抓取网络数据”的第三节“利用IE,抓取解禁股票数据”,这个专题是非常有用的知识点,希望大家掌握。第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&amp;, j&amp; SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")End Sub
  代码的讲解:1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  积木编程的思路内涵:在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。2 建立自己的“积木库”。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。
  
  VBA的应用界定VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程:第一套:VBA代码解决方案是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,初学必备;第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程的视频讲解,听元音更易接受。第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。第六套教程:《VBA信息获取与处理》,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。大家可以根据以上资料1→3→2→6→5或者是4→3→2→6→5的顺序逐渐深入的逐渐学习。教程提供讲解的同时提供了大量的积木,如需要可以WeChat: NZ9668
  
  学习VBA是个过程,也需要经历一种枯燥的感觉如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
  浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭。多少VBA人,暗夜中,悄声寻梦,盼却天明。怎无凭!
  回向学习利用VBA的历历往事,不胜感慨,谨以这些文字给大家,分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。 查看全部

  VBA利用IE,抓取解禁股票数据
  大家好,我们今日讲解“VBA信息获取与处理”教程中第九个专题“利用IE抓取网络数据”的第三节“利用IE,抓取解禁股票数据”,这个专题是非常有用的知识点,希望大家掌握。第四节 利用IE,抓取解禁股票数据大家好,这讲讲解的是利用IE,抓取东方财富网解禁股票的数据,利用的方法和上一讲基本类似,目的仍是给大家展示一下VBA中抓取数据的实例,给大家多介绍一种实用的场景,供大家选择利用。实用场景:我不是太清楚解禁股的概念,但很多玩股票的朋友都有关注,经常要看每天股票解禁的股票数据,以便等到某种信息,要求利用IE实现提取某网站股票的解禁股信息,将这些数据放到工作表中以备选查看。选择的网址是: 即东方财富网的数据。1 应用IE实现抓取解禁股票信息的思路分析为了实现上述的场景,我们先看一看上述提供网址提供网页的信息:
  
  上述的网页中,我要提取的是红色框框起来表的数据,我们进行一下思路的分析:首先要建立一个IE对象,然后将网页文档提取出来,在网页文档上提取第三个表的数据即可。提取表数据的时候可以模拟真正工作表的行列循环,依次提取数据,在我之前的讲解中提到Rows.Length是指网页表格的个数,Cells(j).innertext是指单元格的内容。这两点在写代码的时候要注意。另外,在抓取网页文档的表时我们这讲采用all.tags("table")(3)的方法,这种方法在之前的讲解中讲过是非常模糊但非常好用的一种数据查找的方案。all.tags(“标签名称”):返回该类标签的元素集合。这里选择序号(3)是指序号为3的表的数据。对于innertext的概念,大家要注意理解innerText 是指标签之间的纯文本信息。在实现提取数据后,将内存释放,这是我建议的方案。2 应用IE实现抓取抓取解禁股票信息的代码实现为了实现上述的思路,我给出了下面的代码:
  Sub myNZB() '利用IE,抓取解禁股票数据 DimIE, dmt, tb, i&amp;, j&amp; SetIE = CreateObject("InternetExplorer.Application") '创建一个IE对象 Sheets("SHEET3").Select Cells.ClearComments WithIE .Visible= True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop Setdmt = .document '将IE浏览器加载的页面文档,赋予dmt变量 Settb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象 Fori = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next EndWith SetIE = Nothing Setdmt = Nothing Settb = Nothing MsgBox("ok")End Sub
  代码的讲解:1)Set IE = CreateObject("InternetExplorer.Application") 建立IE 的引用。2).Visible = True '显示它 .navigate"" '加载某个页面 DoUntil .readystate = 4 '等待页面加载完毕 DoEvents Loop上述代码令浏览器可见,加载网址, 一直到加载完成,其中的DoEvents 是避免软死机的现象出现。3) Set dmt = .document '将IE浏览器加载的页面文档,赋予dmt变量4) Set tb = dmt.all.tags("table")(3) '通过索引号捕捉表格对象5)For i = 0 To tb.Rows.Length - 1 '历遍其每个行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '历遍每行的每个单元格 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其innertext写入单元格 Next Next提取表格的数据到工作表。6) Set IE = Nothing Setdmt = NothingSet tb = Nothing回收内存。对于回收内存的操作,建议大家利用.在数据库、字典、查找等等案例中都有类似的操作。代码截图:
  
  通过上述的代码,就可以完成我们的思路。3 应用IE实现抓取解禁股票信息的实现效果当我们点击运行按钮,如图的箭头所示,程序就会开始运行,抓取网页数据到工作表中。当然在实际的应用中,用户可以根据自己的实际需要完成抓取工作到指定的位置。
  
  从而验证了我们思路的正确。
  本节知识点回向:如何在页面文档中提取指定表的数据?
  本节内容参考:009工作表.xlsm
  
  积木编程的思路内涵:在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。2 建立自己的“积木库”。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。
  
  VBA的应用界定VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程:第一套:VBA代码解决方案是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,初学必备;第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。第四套:VBA代码解决方案之视频是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程的视频讲解,听元音更易接受。第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。第六套教程:《VBA信息获取与处理》,这是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。大家可以根据以上资料1→3→2→6→5或者是4→3→2→6→5的顺序逐渐深入的逐渐学习。教程提供讲解的同时提供了大量的积木,如需要可以WeChat: NZ9668
  
  学习VBA是个过程,也需要经历一种枯燥的感觉如太白诗云:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。这些教程也是为帮助大家起航,助上我自己之力,我的上述教程是我多的经验的传递,“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。茶,满也好,少也好,不要计较;浓也好,淡也好,其中自有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。在后疫情更加严峻的存量残杀世界中,为自己的生存进行知识的储备,特别是新知识的储备。学习时微而无声,利用时则巨则汹涌。每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:
  浮云掠过,暗语无声,唯有清风,惊了梦中啼莺。望星,疏移北斗,奈将往事雁同行。阡陌人,昏灯明暗,忍顾长亭。多少VBA人,暗夜中,悄声寻梦,盼却天明。怎无凭!
  回向学习利用VBA的历历往事,不胜感慨,谨以这些文字给大家,分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。

Excel抓取网页表格数据-无需编程实现

网站优化优采云 发表了文章 • 0 个评论 • 352 次浏览 • 2022-05-04 08:30 • 来自相关话题

  Excel抓取网页表格数据-无需编程实现
  当今社会,是一个越来越追求数据更新的社会,互联网的兴起,数据大爆炸,几乎每个行业都要分析大量的数据来作为各种决策的基础,所以,谁掌握的数据多、获取实时数据更快,就可能成为人生赢家。这也是有越来越多的工程师从事网络爬虫抓取数据工作的原因。
  当然,网络爬虫本身需要有一定的编程与算法基础,好的代码要花费大量的人力和时间来完成,这使得很多需要数据又不会相关知识的同学对此望而却步。
  其实,Excel从2007版本开始,针对一些网页数据可以不用编程就能实现数据的自动抓取与定时刷新功能,是不是很cool?
  由于不需要用户写代码,所以,功能实现必然有一些限制,下面是我个人总结的,仅供参考:
  下面我们通过举例来讲解如何操作。比如找到一个为数不多以表格方式而非纯动态刷新的股票网站:,对其前20个股票数据进行定时刷新。
  打开Excel,找到“数据”-&gt;“获取外部数据”-&gt;”自网站”;
  
  会弹出一个名为“新建Web查询”类似简易浏览器的界面,其中,excel对于网址的输入长度是有限制的,太长了会打开失败,本次输入()没有问题;
  
  在“新建Web查询”界面点击“转到”,即可打开网页;
  
  在页面里面Excel会尝试将表格数据以符号进行标注,找到所需要的表格,对应点选后,会变成对勾,然后点击“导入”按钮;
  
  会弹出“导入数据”的对话框,以选择数据存放的开始位置,在这里按照默认位置“A1”不变,直接点击“确定”;
  
  此时在“A1”单元格中会显示:“:正在获取数据”字样,说明Excel正在从网站同步数据;
  
  稍过一会,就能看到网站中的表格数据被抓取到Excel表格中;
  
  7. Excel抓取网页表格数据的功能并不仅限于此,还可以打开自动刷新功能,并选择自动刷新数据的时间(以分钟为单位),以及打开Excel表时是否马上刷新数据,设置方法在“数据”功能区中的“连接”操作区,如下图:
  
  
  通过上面的操作,基本完成了在Excel中抓取网页表格数据的功能,方法可以适用于各种常规表格形式的网页数据获取,比如在IT中非常常用的Bugzilla,或者做市场经常需要的汇率查询。
  下面应好友要求,给出一个抓取美元对人民币汇率的gif案例,设定60分钟刷新一次数据,选用的网址是:。
  
  本次分享就结束了,希望对大家有帮助,谢谢观赏! 查看全部

  Excel抓取网页表格数据-无需编程实现
  当今社会,是一个越来越追求数据更新的社会,互联网的兴起,数据大爆炸,几乎每个行业都要分析大量的数据来作为各种决策的基础,所以,谁掌握的数据多、获取实时数据更快,就可能成为人生赢家。这也是有越来越多的工程师从事网络爬虫抓取数据工作的原因。
  当然,网络爬虫本身需要有一定的编程与算法基础,好的代码要花费大量的人力和时间来完成,这使得很多需要数据又不会相关知识的同学对此望而却步。
  其实,Excel从2007版本开始,针对一些网页数据可以不用编程就能实现数据的自动抓取与定时刷新功能,是不是很cool?
  由于不需要用户写代码,所以,功能实现必然有一些限制,下面是我个人总结的,仅供参考:
  下面我们通过举例来讲解如何操作。比如找到一个为数不多以表格方式而非纯动态刷新的股票网站:,对其前20个股票数据进行定时刷新。
  打开Excel,找到“数据”-&gt;“获取外部数据”-&gt;”自网站”;
  
  会弹出一个名为“新建Web查询”类似简易浏览器的界面,其中,excel对于网址的输入长度是有限制的,太长了会打开失败,本次输入()没有问题;
  
  在“新建Web查询”界面点击“转到”,即可打开网页;
  
  在页面里面Excel会尝试将表格数据以符号进行标注,找到所需要的表格,对应点选后,会变成对勾,然后点击“导入”按钮;
  
  会弹出“导入数据”的对话框,以选择数据存放的开始位置,在这里按照默认位置“A1”不变,直接点击“确定”;
  
  此时在“A1”单元格中会显示:“:正在获取数据”字样,说明Excel正在从网站同步数据;
  
  稍过一会,就能看到网站中的表格数据被抓取到Excel表格中;
  
  7. Excel抓取网页表格数据的功能并不仅限于此,还可以打开自动刷新功能,并选择自动刷新数据的时间(以分钟为单位),以及打开Excel表时是否马上刷新数据,设置方法在“数据”功能区中的“连接”操作区,如下图:
  
  
  通过上面的操作,基本完成了在Excel中抓取网页表格数据的功能,方法可以适用于各种常规表格形式的网页数据获取,比如在IT中非常常用的Bugzilla,或者做市场经常需要的汇率查询。
  下面应好友要求,给出一个抓取美元对人民币汇率的gif案例,设定60分钟刷新一次数据,选用的网址是:。
  
  本次分享就结束了,希望对大家有帮助,谢谢观赏!

你会用Excel函数实现网页数据抓取吗?

网站优化优采云 发表了文章 • 0 个评论 • 90 次浏览 • 2022-05-04 08:28 • 来自相关话题

  你会用Excel函数实现网页数据抓取吗?
  NO.139-网页函数的小应用
  作者:看见星光微博:EXCELers / 知识星球:Excel
  HI~大家好,我是星光。话说……话不知道从何说起,那就从互联网开扯吧……话说随着互联网的高速发展,网页数据愈发成为数据分析过程中最重要的数据来源之一……也许正是基于这样的考量,从2013版开始,Excel新增了一个名为Web的函数类别,使用该类别的函数,咱们可以通过网页从Web服务器获取数据,比如股票信息、天气查询、有道翻译、男女情缘等等。
  打个响指,高大上的开场白结束了,下面举个小栗子。
  
  如上图所示,在B2单元格输入以下公式,可以将A2单元格的值进行英汉或汉英互译▼
  =FILTERXML(WEBSERVICE(";i="&amp;A2&amp;"&amp;doctype=xml"),"//translation")
  公式看起来很长,这主要是因为网址长度偏长的缘故,实际上该公式的结构非常简单。
  看我手指,歪、涂、斯瑞,它主要有3部分构成。
  第1部分构建网址。
  ";i="&amp;A2&amp;"&amp;doctype=xml"
  这是有道在线翻译的网页地址,包含了关键的参数部分,i="&amp;A2是需要翻译的词汇,doctype=xml是返回文件的类型,是xml。只所以返回xml是因为FILTERXML函数可以获取XML结构化内容中的信息。第2部分读取网址
  WEBSERVICE函数可以通过指定的网页地址从Web服务器获取数据(需要计算机联网状态)
  本例中,B2公式▼
  =WEBSERVICE(";i="&amp;A2&amp;"&amp;doctype=xml&amp;version")
  获取数据如下
  "
  第3部分获取目标数据
  这里使用了FILTERXML函数,FILTERXML函数语法如下▼
  FILTERXML(xml,xpath)
  该函数共有两个参数,xml参数是有效的xml格式文本,xpath参数是需要查询的目标数据在xml中的标准路径。
  通过第2部分获取的xml文件内容,我们可以很直接的看到看见星光的翻译结果See the stars处于translation路径下(第6至第8行代码),因此第2参数设为//translation。
  ……
  OK,这就是今天和大家分享的内容,感兴趣的小伙伴可以尝试使用web函数从百度天气预报获取家乡城市的天气信息~
  由于FILTERXML可以从XML格式文本中获取数据,因此当XML文本是由我们刻意搭建产生的字符串时,就会有很多奇妙的用法,比如用该函数实现VBA编程Split函数的效果,关于这一点,咱们以后有缘再聊。
  ▎全方位系统学习Excel
  推荐加入我的付费Excel社群 ▎
  点击图片可获取相关推文..▼
   查看全部

  你会用Excel函数实现网页数据抓取吗?
  NO.139-网页函数的小应用
  作者:看见星光微博:EXCELers / 知识星球:Excel
  HI~大家好,我是星光。话说……话不知道从何说起,那就从互联网开扯吧……话说随着互联网的高速发展,网页数据愈发成为数据分析过程中最重要的数据来源之一……也许正是基于这样的考量,从2013版开始,Excel新增了一个名为Web的函数类别,使用该类别的函数,咱们可以通过网页从Web服务器获取数据,比如股票信息、天气查询、有道翻译、男女情缘等等。
  打个响指,高大上的开场白结束了,下面举个小栗子。
  
  如上图所示,在B2单元格输入以下公式,可以将A2单元格的值进行英汉或汉英互译▼
  =FILTERXML(WEBSERVICE(";i="&amp;A2&amp;"&amp;doctype=xml"),"//translation")
  公式看起来很长,这主要是因为网址长度偏长的缘故,实际上该公式的结构非常简单。
  看我手指,歪、涂、斯瑞,它主要有3部分构成。
  第1部分构建网址。
  ";i="&amp;A2&amp;"&amp;doctype=xml"
  这是有道在线翻译的网页地址,包含了关键的参数部分,i="&amp;A2是需要翻译的词汇,doctype=xml是返回文件的类型,是xml。只所以返回xml是因为FILTERXML函数可以获取XML结构化内容中的信息。第2部分读取网址
  WEBSERVICE函数可以通过指定的网页地址从Web服务器获取数据(需要计算机联网状态)
  本例中,B2公式▼
  =WEBSERVICE(";i="&amp;A2&amp;"&amp;doctype=xml&amp;version")
  获取数据如下
  "
  第3部分获取目标数据
  这里使用了FILTERXML函数,FILTERXML函数语法如下▼
  FILTERXML(xml,xpath)
  该函数共有两个参数,xml参数是有效的xml格式文本,xpath参数是需要查询的目标数据在xml中的标准路径。
  通过第2部分获取的xml文件内容,我们可以很直接的看到看见星光的翻译结果See the stars处于translation路径下(第6至第8行代码),因此第2参数设为//translation。
  ……
  OK,这就是今天和大家分享的内容,感兴趣的小伙伴可以尝试使用web函数从百度天气预报获取家乡城市的天气信息~
  由于FILTERXML可以从XML格式文本中获取数据,因此当XML文本是由我们刻意搭建产生的字符串时,就会有很多奇妙的用法,比如用该函数实现VBA编程Split函数的效果,关于这一点,咱们以后有缘再聊。
  ▎全方位系统学习Excel
  推荐加入我的付费Excel社群 ▎
  点击图片可获取相关推文..▼
  

vba 网页数据抓取(【10周入门系列文章】第二大问题——数据分析工具)

网站优化优采云 发表了文章 • 0 个评论 • 102 次浏览 • 2022-04-14 15:13 • 来自相关话题

  vba 网页数据抓取(【10周入门系列文章】第二大问题——数据分析工具)
  数据分析中存在三个主要问题:
  关于第一个问题,看过我公众号“10周入门系列文章”的同学应该有一个大概的了解。
  今天,我们来说说第二个大问题——数据分析工具!
  对于数据分析,我一直强调核心是业务,业务的分析逻辑映射到数据分析的处理逻辑,数据分析工具是帮助我们取得成果的手段。
  但是,你说工具不重要,它们很重要,就像什么样的路选择什么样的交通工具,合适的工具可以帮助我们更快地到达目的地。对应数据分析的不同方面,应该选择不同的工具,甚至更容易使用。
  今天的文章 文章 是针对扫盲工具的。
  PS:估计网上没有比这个更全面的了 一、 从工具属性和分析师需求上分
  在企业中,数据分析师通常分为业务和技术两大类。两者的能力和工作内容有很大不同,对工具的要求也不同。
  商业或技术
  业务分析师往往在运营部、市场部、销售部等,根据所服务的业务部门的不同,可能会被称为数据运营、业务分析、会员分析、业务分析师等名称。之所以会出现这种差异,是因为各个业务线所考虑的具体问题不同,分析思路和系统也不同。日常工作更多是整理业务报表,针对具体业务做专题分析,对围绕业务增长需要用到的数据做计算、规划、规划。
  技术分析师,通常在 IT 部门和数据中心。根据工作环节不同,分为数据库工程师、ETL工程师、爬虫工程师、算法工程师等角色。在中小型企业中,通常由技术兄弟负责所有这些流程。在大型企业中,一个标准的数据中心一般都有数据仓库、专题分析、建模分析等小组来完成数据开发工作,无论公司多大,也有专门的数据治理小组。这种区别的原因是需要一个多层次的复杂数据系统来产生数据。一个数据系统需要数据采集、数据集成、数据库管理、数据算法开发和报表设计的组合。这样,可以将散落在各处的数据采集起来,计算成常用指标,并以各种炫酷的图表展示。这里的每一个环节都需要相应的技术支持和人员工作,所以有不同的岗位。
  PS:在找数据分析职位的时候,一定要分清是技术还是业务,是否符合你的专业定位。
  分析师分为技术和业务,相应的工具也有这样的属性。
  分析工具
  对于初级数据分析师来说,玩Excel是必须的,数据透视表和公式的使用一定要精通,VBA是加分项。此外,有必要学习一个统计分析工具。SPSS 是一个很好的切入点。
  对于高级数据分析师来说,使用分析工具是一项核心能力。VBA基本必备,SPSS/SAS/R至少要精通其中一种。其他分析工具(如 Matlab)视情况而定。
  对于数据挖掘工程师……嗯,R 和 Python 是必须的,你必须编写代码来解决它。
  代码工具
  对于初级数据分析师,可以写SQL查询,有需要的可以写Hadoop和Hive查询,基本没问题。
  对于高级数据分析师来说,除了 SQL 之外,还需要学习 Python,使用 Python 可以更轻松地获取和处理数据。当然其他编程语言也是可以的。
  对于数据挖掘工程师来说,Hadoop一定要熟悉,Python/Java/C++至少要熟悉一个,Shell一定会用……总之,编程语言绝对是数据挖掘工程师的核心能力。
  一张图来说明问题:
  
  二、从企业数据应用架构划分
  工具的使用还取决于企业的需求和环境。为什么小企业雇佣数据分析师用 Excel 做报告,而大公司雇佣数据分析师玩 Python 和 R?这取决于企业的数据架构。
  从 IT 的角度来看,数据工具在实际应用中可以分为两个维度:
  第一维度:数据存储层-数据报告层-数据分析层-数据表现层
  第二维度:用户级-部门级-企业级-BI级
  1、数据存储层
  从数据存储设计到数据库概念和数据库语言,这方面不必深入研究,毕竟有专业的DBA。但至少了解数据是如何存储的,数据的基本结构和数据类型。SQL查询语言必不可少,精通才是最好的。可以从常见的select查询、update修改、delete删除、insert插入的基本结构和阅读入手。
  Access是最基本的个人数据库,常用于个人或一些基础数据的存储;MySQL 数据库,这是部门级或 Internet 数据库应用程序所必需的。这时,关键是掌握数据库结构和SQL语言数据查询能力。SQL Server 2005或之后的版本,对于中小型企业来说,一些大型企业也可以使用SQL Server数据库,其实此时除了数据存储,还包括数据报表和数据分析。
  DB2和Oracle数据库都是大型数据库,主要是企业级,特别是大型企业或者需要海量数据存储的企业。一般来说,大型数据库公司提供非常好的数据集成应用平台。
  BI级别,其实这不是数据库,而是基于之前数据库的企业级应用的数据仓库。Data Warehouse,建立在DW机器上的数据存储,基本上是一个集各种数据分析、报表、分析、呈现为一体的商业智能平台。
  2、报表/BI层
  企业存储需要读取和展示的数据,报表工具是最常用的工具,尤其是在中国。过去,传统报表大多解决了呈现的问题,但现在衍生出一些分析报表工具,也会与其他应用交叉,制作数据分析报表。涵盖早期商业智能的功能。
  Tableau、PowerBI、FineBI 和 Qlikview 等 BI(商业智能)工具涵盖了多层报告、数据分析和可视化。底层也可以连接数据仓库,构建OLAP分析模型。
  3、数据分析层
  其实这一层有很多分析工具,当然最常用的就是Excel了。
  Excel软件,首先,版本越高越好用。当然,对于excel,很多人只掌握了Excel 5%的功能。Excel的功能非常强大,甚至可以完成所有的统计分析工作!但我也常说,有能力把Excel当作统计工具玩,比专攻统计软件要好。
  SPSS软件:当前版本为18,名称也已更改为PASW Statistics;我是从3.0开始在Dos环境下编程分析的,目前版本的变化也可以看到SPSS社会科学统计包的变化,从Emphasis on Medicine、Chemical等开始多加和更加重视业务分析,现在它已经成为预测分析软件。
  SAS软件:SAS其实比SPSS更强大。SAS平台化,集成EM挖矿模块平台。相对来说,SAS 比较难学,但是如果你掌握了 SAS 会更有价值,比如离散选择模型、抽样问题、正交实验设计等等还是 SAS 更好用,另外 SAS 还有更多学习资料。
  其他还有 Python 和 R,后面会详细讨论。
  4、表示层
  表示层也称为数据可视化,上面几乎每个工具都提供了一点表示。但是,最常用的企业级应用程序是 BI,用于分析和报告。
  
  PS:需要注意的是,这个分类不区分软件,只是想说明软件的应用。有时我们用数据库做报表分析,有时报表就是分析,有时分析就是呈现;当然,有时候呈现就是分析,分析也是报表,报表就是数据存储!三、4大工具盘点
  以上就啰嗦了这么多,下面详细说说Excel、R、Python、BI。
  &gt;&gt;&gt;&gt;Excel
  适用场景:
  1.一般办公需求的数据处理;
  2.中小企业数据管理和存储(很多国企使用);
  3.在校学生、教师做简单的统计分析(如方差分析、回归分析);
  4.结合Word和PowerPoint制作数据分析报告;
  5.数据分析师的主要分析工具(数据分析师的一些辅助工具);
  6.部分商业杂志、报纸图表制作(数据可视化);
  优势:
  1.容易上手;
  2.学习资源非常丰富;
  3.你可以用Excel、建模、可视化、报告、动态图表做很多事情;
  4.帮助你在学习其他工具(如Python、R)之前了解很多操作的含义;
  缺点:
  1.深入学习需要掌握VBA,还是很困难的;
  2.数据量大时会卡住;
  3.到Excel 2016,不借助其他工具,Excel数据文件本身只能容纳108万行数据,不适合处理大规模数据集;
  4.内置统计分析的种类过于简单,实用价值不大;
  5.不同于Python、R语言等开源软件,正版Excel是需要付费的,比如我用office365.一年要300多块钱(但很值得)
  &gt;&gt;&gt;&gt;R
  使用场景:
  借助扩展的第三方 R 包,R 几乎可以做任何需要数据的事情。就我们一般的数据分析或学术数据分析工作而言,R能做的包括但不限于以下几点:
  1.数据清洗和排序;
  2.网络爬虫;
  3.数据可视化;
  4.统计假设检验(t检验、ANOVA、卡方检验等);
  5.统计建模(线性回归、逻辑回归、树模型、神经网络等);
  6.数据分析报告输出(Rmarkdown);
  R 容易学吗?
  从我个人的角度来看,R入门是非常容易的。经过10天的强化学习,掌握R的基本使用、基本数据结构、数据导入导出、简单的数据可视化是绝对没有问题的. 有了这些基础,在遇到实际问题时,可以找到自己需要使用的R包,阅读R的帮助文档,以及网上的资料,可以比较快速的解决具体问题。
  &gt;&gt;&gt;&gt;蟒蛇
  R语言和Python都是需要编程的数据分析工具。不同的是,R专门用于数据分析领域,而科学计算和数据分析只是Python的一个应用分支。Python还可以用于开发网页和游戏。,做系统的后端开发和运维。
  现在的一个趋势是Python在数据分析领域正在赶超R,并且在某些方面已经超越了R,比如机器学习、文本挖掘等部分编程领域,但是R语言在数据分析领域仍然保持着优势。部分统计。Python在数据分析方面的发展在很多地方借鉴了R语言的一些特性。所以,如果你还是一片空白,还没有开始学习,又想决定学R还是Python,建议从Python入手。
  Python和R都比较容易学,但是如果同时学,很容易混淆,因为很多地方都非常相似,所以不建议同时学。等你掌握其中一个到一定程度,再开始学习另一个。
  Python 能做什么?
  1.网络数据爬取,使用Python可以轻松编写强大的爬虫爬取网络数据;
  2.数据清洗;
  3.数据建模;
  4.根据业务场景和实际问题构建数据分析算法;
  5.数据可视化(个人感觉不如R好用);
  6.机器学习、文本挖掘等高级数据挖掘分析领域;
  我应该学习 R 还是 Python?
  如果因为时间有限只能选择其中之一学习,我推荐使用 Python。但我仍然建议了解两者,毕竟每个人都不一样。你可能在一些地方听说过,Python在工作中比较常用,但在工作中,解决问题才是最重要的。如果能用R高效解决问题,就用R吧。其实Python的很多数据分析特性都是模仿R实现的,比如pandas数据框,正在开发的ggplot可视化包模仿了R语言中非常有名的ggplot&lt; @2.
  &gt;&gt;&gt;&gt;BI
  大多数分析师的日常工作是做报告,而数据分析师使用的报告较多的是BI。
  BI代表商业智能。在传统企业中,它是一整套解决方案。有效整合企业数据,快速生成决策报表。涉及数据仓库、ETL、OLAP、权限控制等模块。
  BI 工具有两个主要目的。一种是使用 BI 制作自动化报告。数据工作每天都涉及大量的数据,需要整理汇总,工作量很大。这部分工作可以交给BI自动化来完成,从数据正则化、建模到下载。
  另一种是利用其可视化功能进行分析。BI的优点是提供了比Excel更丰富的可视化功能,操作简单,美观。如果你每天需要两个小时的绘图时间,BI 会缩短一半的时间。
  BI作为企业级应用,可用于连接公司数据库,实现企业级报表的制作。本篇涉及数据架构,不再深入讨论。
  关于BI,Tableau、PowerBI、FineBI、Qlikview等BI(商业智能)工具覆盖了报表、数据分析、可视化等多个层面。底层也可以连接数据仓库,构建OLAP分析模型。
  就个人而言,为了快速启动数据分析和培养早期数据思维,BI工具无疑是最容易使用的。下一篇文章将教你如何搭建BI分析平台,学习操作BI工具! 查看全部

  vba 网页数据抓取(【10周入门系列文章】第二大问题——数据分析工具)
  数据分析中存在三个主要问题:
  关于第一个问题,看过我公众号“10周入门系列文章”的同学应该有一个大概的了解。
  今天,我们来说说第二个大问题——数据分析工具!
  对于数据分析,我一直强调核心是业务,业务的分析逻辑映射到数据分析的处理逻辑,数据分析工具是帮助我们取得成果的手段。
  但是,你说工具不重要,它们很重要,就像什么样的路选择什么样的交通工具,合适的工具可以帮助我们更快地到达目的地。对应数据分析的不同方面,应该选择不同的工具,甚至更容易使用。
  今天的文章 文章 是针对扫盲工具的。
  PS:估计网上没有比这个更全面的了 一、 从工具属性和分析师需求上分
  在企业中,数据分析师通常分为业务和技术两大类。两者的能力和工作内容有很大不同,对工具的要求也不同。
  商业或技术
  业务分析师往往在运营部、市场部、销售部等,根据所服务的业务部门的不同,可能会被称为数据运营、业务分析、会员分析、业务分析师等名称。之所以会出现这种差异,是因为各个业务线所考虑的具体问题不同,分析思路和系统也不同。日常工作更多是整理业务报表,针对具体业务做专题分析,对围绕业务增长需要用到的数据做计算、规划、规划。
  技术分析师,通常在 IT 部门和数据中心。根据工作环节不同,分为数据库工程师、ETL工程师、爬虫工程师、算法工程师等角色。在中小型企业中,通常由技术兄弟负责所有这些流程。在大型企业中,一个标准的数据中心一般都有数据仓库、专题分析、建模分析等小组来完成数据开发工作,无论公司多大,也有专门的数据治理小组。这种区别的原因是需要一个多层次的复杂数据系统来产生数据。一个数据系统需要数据采集、数据集成、数据库管理、数据算法开发和报表设计的组合。这样,可以将散落在各处的数据采集起来,计算成常用指标,并以各种炫酷的图表展示。这里的每一个环节都需要相应的技术支持和人员工作,所以有不同的岗位。
  PS:在找数据分析职位的时候,一定要分清是技术还是业务,是否符合你的专业定位。
  分析师分为技术和业务,相应的工具也有这样的属性。
  分析工具
  对于初级数据分析师来说,玩Excel是必须的,数据透视表和公式的使用一定要精通,VBA是加分项。此外,有必要学习一个统计分析工具。SPSS 是一个很好的切入点。
  对于高级数据分析师来说,使用分析工具是一项核心能力。VBA基本必备,SPSS/SAS/R至少要精通其中一种。其他分析工具(如 Matlab)视情况而定。
  对于数据挖掘工程师……嗯,R 和 Python 是必须的,你必须编写代码来解决它。
  代码工具
  对于初级数据分析师,可以写SQL查询,有需要的可以写Hadoop和Hive查询,基本没问题。
  对于高级数据分析师来说,除了 SQL 之外,还需要学习 Python,使用 Python 可以更轻松地获取和处理数据。当然其他编程语言也是可以的。
  对于数据挖掘工程师来说,Hadoop一定要熟悉,Python/Java/C++至少要熟悉一个,Shell一定会用……总之,编程语言绝对是数据挖掘工程师的核心能力。
  一张图来说明问题:
  
  二、从企业数据应用架构划分
  工具的使用还取决于企业的需求和环境。为什么小企业雇佣数据分析师用 Excel 做报告,而大公司雇佣数据分析师玩 Python 和 R?这取决于企业的数据架构。
  从 IT 的角度来看,数据工具在实际应用中可以分为两个维度:
  第一维度:数据存储层-数据报告层-数据分析层-数据表现层
  第二维度:用户级-部门级-企业级-BI级
  1、数据存储层
  从数据存储设计到数据库概念和数据库语言,这方面不必深入研究,毕竟有专业的DBA。但至少了解数据是如何存储的,数据的基本结构和数据类型。SQL查询语言必不可少,精通才是最好的。可以从常见的select查询、update修改、delete删除、insert插入的基本结构和阅读入手。
  Access是最基本的个人数据库,常用于个人或一些基础数据的存储;MySQL 数据库,这是部门级或 Internet 数据库应用程序所必需的。这时,关键是掌握数据库结构和SQL语言数据查询能力。SQL Server 2005或之后的版本,对于中小型企业来说,一些大型企业也可以使用SQL Server数据库,其实此时除了数据存储,还包括数据报表和数据分析。
  DB2和Oracle数据库都是大型数据库,主要是企业级,特别是大型企业或者需要海量数据存储的企业。一般来说,大型数据库公司提供非常好的数据集成应用平台。
  BI级别,其实这不是数据库,而是基于之前数据库的企业级应用的数据仓库。Data Warehouse,建立在DW机器上的数据存储,基本上是一个集各种数据分析、报表、分析、呈现为一体的商业智能平台。
  2、报表/BI层
  企业存储需要读取和展示的数据,报表工具是最常用的工具,尤其是在中国。过去,传统报表大多解决了呈现的问题,但现在衍生出一些分析报表工具,也会与其他应用交叉,制作数据分析报表。涵盖早期商业智能的功能。
  Tableau、PowerBI、FineBI 和 Qlikview 等 BI(商业智能)工具涵盖了多层报告、数据分析和可视化。底层也可以连接数据仓库,构建OLAP分析模型。
  3、数据分析层
  其实这一层有很多分析工具,当然最常用的就是Excel了。
  Excel软件,首先,版本越高越好用。当然,对于excel,很多人只掌握了Excel 5%的功能。Excel的功能非常强大,甚至可以完成所有的统计分析工作!但我也常说,有能力把Excel当作统计工具玩,比专攻统计软件要好。
  SPSS软件:当前版本为18,名称也已更改为PASW Statistics;我是从3.0开始在Dos环境下编程分析的,目前版本的变化也可以看到SPSS社会科学统计包的变化,从Emphasis on Medicine、Chemical等开始多加和更加重视业务分析,现在它已经成为预测分析软件。
  SAS软件:SAS其实比SPSS更强大。SAS平台化,集成EM挖矿模块平台。相对来说,SAS 比较难学,但是如果你掌握了 SAS 会更有价值,比如离散选择模型、抽样问题、正交实验设计等等还是 SAS 更好用,另外 SAS 还有更多学习资料。
  其他还有 Python 和 R,后面会详细讨论。
  4、表示层
  表示层也称为数据可视化,上面几乎每个工具都提供了一点表示。但是,最常用的企业级应用程序是 BI,用于分析和报告。
  
  PS:需要注意的是,这个分类不区分软件,只是想说明软件的应用。有时我们用数据库做报表分析,有时报表就是分析,有时分析就是呈现;当然,有时候呈现就是分析,分析也是报表,报表就是数据存储!三、4大工具盘点
  以上就啰嗦了这么多,下面详细说说Excel、R、Python、BI。
  &gt;&gt;&gt;&gt;Excel
  适用场景:
  1.一般办公需求的数据处理;
  2.中小企业数据管理和存储(很多国企使用);
  3.在校学生、教师做简单的统计分析(如方差分析、回归分析);
  4.结合Word和PowerPoint制作数据分析报告;
  5.数据分析师的主要分析工具(数据分析师的一些辅助工具);
  6.部分商业杂志、报纸图表制作(数据可视化);
  优势:
  1.容易上手;
  2.学习资源非常丰富;
  3.你可以用Excel、建模、可视化、报告、动态图表做很多事情;
  4.帮助你在学习其他工具(如Python、R)之前了解很多操作的含义;
  缺点:
  1.深入学习需要掌握VBA,还是很困难的;
  2.数据量大时会卡住;
  3.到Excel 2016,不借助其他工具,Excel数据文件本身只能容纳108万行数据,不适合处理大规模数据集;
  4.内置统计分析的种类过于简单,实用价值不大;
  5.不同于Python、R语言等开源软件,正版Excel是需要付费的,比如我用office365.一年要300多块钱(但很值得)
  &gt;&gt;&gt;&gt;R
  使用场景:
  借助扩展的第三方 R 包,R 几乎可以做任何需要数据的事情。就我们一般的数据分析或学术数据分析工作而言,R能做的包括但不限于以下几点:
  1.数据清洗和排序;
  2.网络爬虫;
  3.数据可视化;
  4.统计假设检验(t检验、ANOVA、卡方检验等);
  5.统计建模(线性回归、逻辑回归、树模型、神经网络等);
  6.数据分析报告输出(Rmarkdown);
  R 容易学吗?
  从我个人的角度来看,R入门是非常容易的。经过10天的强化学习,掌握R的基本使用、基本数据结构、数据导入导出、简单的数据可视化是绝对没有问题的. 有了这些基础,在遇到实际问题时,可以找到自己需要使用的R包,阅读R的帮助文档,以及网上的资料,可以比较快速的解决具体问题。
  &gt;&gt;&gt;&gt;蟒蛇
  R语言和Python都是需要编程的数据分析工具。不同的是,R专门用于数据分析领域,而科学计算和数据分析只是Python的一个应用分支。Python还可以用于开发网页和游戏。,做系统的后端开发和运维。
  现在的一个趋势是Python在数据分析领域正在赶超R,并且在某些方面已经超越了R,比如机器学习、文本挖掘等部分编程领域,但是R语言在数据分析领域仍然保持着优势。部分统计。Python在数据分析方面的发展在很多地方借鉴了R语言的一些特性。所以,如果你还是一片空白,还没有开始学习,又想决定学R还是Python,建议从Python入手。
  Python和R都比较容易学,但是如果同时学,很容易混淆,因为很多地方都非常相似,所以不建议同时学。等你掌握其中一个到一定程度,再开始学习另一个。
  Python 能做什么?
  1.网络数据爬取,使用Python可以轻松编写强大的爬虫爬取网络数据;
  2.数据清洗;
  3.数据建模;
  4.根据业务场景和实际问题构建数据分析算法;
  5.数据可视化(个人感觉不如R好用);
  6.机器学习、文本挖掘等高级数据挖掘分析领域;
  我应该学习 R 还是 Python?
  如果因为时间有限只能选择其中之一学习,我推荐使用 Python。但我仍然建议了解两者,毕竟每个人都不一样。你可能在一些地方听说过,Python在工作中比较常用,但在工作中,解决问题才是最重要的。如果能用R高效解决问题,就用R吧。其实Python的很多数据分析特性都是模仿R实现的,比如pandas数据框,正在开发的ggplot可视化包模仿了R语言中非常有名的ggplot&lt; @2.
  &gt;&gt;&gt;&gt;BI
  大多数分析师的日常工作是做报告,而数据分析师使用的报告较多的是BI。
  BI代表商业智能。在传统企业中,它是一整套解决方案。有效整合企业数据,快速生成决策报表。涉及数据仓库、ETL、OLAP、权限控制等模块。
  BI 工具有两个主要目的。一种是使用 BI 制作自动化报告。数据工作每天都涉及大量的数据,需要整理汇总,工作量很大。这部分工作可以交给BI自动化来完成,从数据正则化、建模到下载。
  另一种是利用其可视化功能进行分析。BI的优点是提供了比Excel更丰富的可视化功能,操作简单,美观。如果你每天需要两个小时的绘图时间,BI 会缩短一半的时间。
  BI作为企业级应用,可用于连接公司数据库,实现企业级报表的制作。本篇涉及数据架构,不再深入讨论。
  关于BI,Tableau、PowerBI、FineBI、Qlikview等BI(商业智能)工具覆盖了报表、数据分析、可视化等多个层面。底层也可以连接数据仓库,构建OLAP分析模型。
  就个人而言,为了快速启动数据分析和培养早期数据思维,BI工具无疑是最容易使用的。下一篇文章将教你如何搭建BI分析平台,学习操作BI工具!

vba 网页数据抓取(【分享成果,随喜正能量】人可以无知,但不可以无趣)

网站优化优采云 发表了文章 • 0 个评论 • 48 次浏览 • 2022-04-14 11:29 • 来自相关话题

  vba 网页数据抓取(【分享成果,随喜正能量】人可以无知,但不可以无趣)
  【分享成果,因正能量而欢欣鼓舞】人可以无知,但不乏味。在心里种下一颗幸福的种子,坚定快乐地做自己的事,让大家不那么无聊。
  《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次改版。这套教程定位在最高级的水平。这是针对初学者和中级的教程。本教程将为大家讲解:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO对象的使用、获取工作表和文件夹信息、图形信息获取、自定义工作表信息功能等。程序文件在32位和64位OFFICE系统上测试。它非常抽象,具有更多的研究价值。
  本课程由两卷八十四讲组成。今天的内容是Topic 8《VBA与HTML文档》第二节上半部分:HTML文档中常用元素总结
  
  第二节 HTML文档的元素分析之一
  3)HTML 评论
  注释标签用于在 HTML 中插入注释。可以在 HTML 代码中插入注释以提高其可读性并使代码更易于理解。浏览器会忽略评论并且不显示它们。感叹号需要紧跟在左括号(左括号)之后,而不是在右括号(右括号)之前。
  评论可以写成以下格式:
  4)段落
  段落是通过
  标签定义。浏览器会自动在段落前后添加空行。(
  是块级元素)
  在上面的例子中,我们使用符号来表示段落
  ,如果我们提取网络小说、新闻等页面新闻的数据,文本是逐段的,这样的页面,我们可以通过
  标签实施。使用ie/webbrowser方法提取此类网页时,遍历所有段落p元素即可。
  使用空段落标记插入空行是一种不好的做法。可以使用
  标签而不是它!(但不要使用
  标记以创建列表。)
  5)超链接
  使用标签在 HTML 中创建链接。
  超链接可以是一个词、一个词或一组词,或者您可以单击以跳转到新文档或当前文档中的一个部分的图像。当您将鼠标指针移到网页中的链接上时,箭头会变成一只小手。
  有两种使用标签的方法:使用 href 属性 - 创建指向另一个文档的链接或使用 name 属性 - 在文档中创建书签。
  超链接是我们最常见的页面元素。基本传送门 网站 有它们。点击后可以跳转到另一个页面。一般语法格式:
  显示的超链接文本
  Target属性表示当我们点击超链接时,是跳转到原页面(_self)还是跳转到新页面(_blank)。
  为了说明这个超链接,我们把“HTML基础学习-1.html”的内容更正一下:
  学习VBA语言
  为了更好的掌握VBA的各个知识点,可以参考我的第一套教程:VBA代码解决方案
  显示学习的网页
  告诉上面的代码,保存为《HTML基础学习-2.html》内容的截图:
  
  打开这个文件:
  
  点击链接:
  查看源代码:
  
  3 本节介绍的HTML文档常用元素总结
  1)标题 -
  2)水平线
  3)评论
  4)段落
  5)超链接
  我们需要熟练掌握以上要素,才能在分析网页时为所欲为。下一讲,我们将继续讲解 HTML 页面的元素。
  回到本节的知识点:
  HTML 文档的框架结构是什么?说出以下元素的标签:标题、水平线、注释、段落、超链接。
  本节参考文档:HTML基础学习-1.html;HTML基础学习-2.html
  
  我20多年的VBA实践经验,全部浓缩在以下教程中,教程学习顺序:
  
  【分享成果,欢喜正能量】生活中,总会有好事发生,也会有坏事发生。我可以处理好的事情,也可以处理坏的事情。像那样做一个普通人也不错。 查看全部

  vba 网页数据抓取(【分享成果,随喜正能量】人可以无知,但不可以无趣)
  【分享成果,因正能量而欢欣鼓舞】人可以无知,但不乏味。在心里种下一颗幸福的种子,坚定快乐地做自己的事,让大家不那么无聊。
  《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次改版。这套教程定位在最高级的水平。这是针对初学者和中级的教程。本教程将为大家讲解:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO对象的使用、获取工作表和文件夹信息、图形信息获取、自定义工作表信息功能等。程序文件在32位和64位OFFICE系统上测试。它非常抽象,具有更多的研究价值。
  本课程由两卷八十四讲组成。今天的内容是Topic 8《VBA与HTML文档》第二节上半部分:HTML文档中常用元素总结
  
  第二节 HTML文档的元素分析之一
  3)HTML 评论
  注释标签用于在 HTML 中插入注释。可以在 HTML 代码中插入注释以提高其可读性并使代码更易于理解。浏览器会忽略评论并且不显示它们。感叹号需要紧跟在左括号(左括号)之后,而不是在右括号(右括号)之前。
  评论可以写成以下格式:
  4)段落
  段落是通过
  标签定义。浏览器会自动在段落前后添加空行。(
  是块级元素)
  在上面的例子中,我们使用符号来表示段落
  ,如果我们提取网络小说、新闻等页面新闻的数据,文本是逐段的,这样的页面,我们可以通过
  标签实施。使用ie/webbrowser方法提取此类网页时,遍历所有段落p元素即可。
  使用空段落标记插入空行是一种不好的做法。可以使用
  标签而不是它!(但不要使用
  标记以创建列表。)
  5)超链接
  使用标签在 HTML 中创建链接。
  超链接可以是一个词、一个词或一组词,或者您可以单击以跳转到新文档或当前文档中的一个部分的图像。当您将鼠标指针移到网页中的链接上时,箭头会变成一只小手。
  有两种使用标签的方法:使用 href 属性 - 创建指向另一个文档的链接或使用 name 属性 - 在文档中创建书签。
  超链接是我们最常见的页面元素。基本传送门 网站 有它们。点击后可以跳转到另一个页面。一般语法格式:
  显示的超链接文本
  Target属性表示当我们点击超链接时,是跳转到原页面(_self)还是跳转到新页面(_blank)。
  为了说明这个超链接,我们把“HTML基础学习-1.html”的内容更正一下:
  学习VBA语言
  为了更好的掌握VBA的各个知识点,可以参考我的第一套教程:VBA代码解决方案
  显示学习的网页
  告诉上面的代码,保存为《HTML基础学习-2.html》内容的截图:
  
  打开这个文件:
  
  点击链接:
  查看源代码:
  
  3 本节介绍的HTML文档常用元素总结
  1)标题 -
  2)水平线
  3)评论
  4)段落
  5)超链接
  我们需要熟练掌握以上要素,才能在分析网页时为所欲为。下一讲,我们将继续讲解 HTML 页面的元素。
  回到本节的知识点:
  HTML 文档的框架结构是什么?说出以下元素的标签:标题、水平线、注释、段落、超链接。
  本节参考文档:HTML基础学习-1.html;HTML基础学习-2.html
  
  我20多年的VBA实践经验,全部浓缩在以下教程中,教程学习顺序:
  
  【分享成果,欢喜正能量】生活中,总会有好事发生,也会有坏事发生。我可以处理好的事情,也可以处理坏的事情。像那样做一个普通人也不错。

vba 网页数据抓取(如何轻松用Excel获取网页数据的一些初步的爬虫方法)

网站优化优采云 发表了文章 • 0 个评论 • 72 次浏览 • 2022-04-14 10:24 • 来自相关话题

  vba 网页数据抓取(如何轻松用Excel获取网页数据的一些初步的爬虫方法)
  通常我们使用Excel,经常处理本地数据。你知道 Excel 的排序、过滤、条件格式、数据透视表、图表等……但你可能不知道如何在 Excel 中获取网页上的数据!
  网络爬虫?!你可能认为你必须编写代码来实现这一点。其实除了代码,Excel还有一些现成的功能,让你不用代码也能获取网页的数据!
  下面的方法中,前三种不用写代码,最后一种需要代码,不过我已经写好了,可以用了,这样你也可以学会轻松使用Excel获取一些web的初步爬虫页面数据方法!
  功能方法
  从 Excel 2013 版本开始,引入了一些 Web 功能。下面两个函数可以一起使用,帮助我们从网页获取数据到Excel。
  FILTERXML(xml, xpath),从 XML 数据中返回指定的数据。网页上的许多数据都以 XML 的形式存在。该函数用于提取 XML 中的指定信息。
  WEBSERVICE(url),返回网页中的数据,可以理解为这个函数可以获取一堆XML字符串数据。
  例如下面的公式使用有道翻译的网站得到翻译结果:
  =FILTERXML(WEBSERVICE(";i="&amp;B2&amp;"&amp;doctype=xml&amp;version"),"//translation")
  
  如果你把上面的公式复制到Excel,你只需要在B2单元格输入你要翻译的内容,公式就会把翻译结果返回给你!
  
  是不是觉得超级方便!对于外部数据的轻量级连接,这个函数方式还是比较方便的。
  除了翻译,使用此功能还可以协助您进行股票交易!我在工作,不方便使用手机或阅读财经网页,但我想关注实时股价。我怎样才能打破它?
  把下面的公式复制到B1单元格,然后在A1单元格输入你关心的股票代码,B1就可以显示实时股价了,想刷新的时候按F9就行了~
  =VALUE(TRIM(MID(SUBSTITUTE(WEBSERVICE("/stockdata/stock_quote.aspx?stocklist="&amp;A1&amp;"&amp;time=" &amp; TEXT(NOW(), "hhmmss"))),",",REPT(" ",9 9)),2*99,111)))
  当你在专心看Excel工作(chao)工作(gu)时,即使老板突然路过,你也能从容应对!不要让你的老板知道这个技能!
  但是你也需要注意使用这个公式。首先,您必须确保您的计算机可以正常连接到 Internet。另外,如果你翻译调整了网页代码,或者网站的入口发生了变化,上面的公式也会失效,你需要重新研究一下逻辑。写公式~
  旧版网页查询功能
  在Excel 2016之前,一直有获取网页数据的功能,在Excel 2016推出PQ后隐藏了,但是还是可以手动调出来的!
  手动方法可以从“选项”中的“数据”设置其显示,也可以直接按快捷键Alt+D+D+W(注:不需要同时按,直接按依次进行,就可以了!),会弹出如下界面:
  
  然后我们只需要输入网页地址,如图所示地址为#06f01。
  这个功能可以帮助我们识别网页中的表格,然后我们只需要选中表格(点击黄色箭头选择),点击右下角的导入,就可以将数据导入Excel了!
  而且还可以刷新这张表,同时支持手动刷新和自动刷新,非常方便~
  
  这种方法的问题在于,并不是所有的网页都能获取数据,因为你可能无法获取到真实的网址,所以你应该尽量找到最深入的地址。你有办法爬取,别人有办法逆向,所以要不断获取网页的数据,需要密切关注网页是否发生变化~
  Power Query 获取网页数据
  从Excel 2016开始,PQ已经集成在Excel中,并且计划替换旧版本的数据查询和获取功能,所以使用PQ也可以帮助我们从网页中获取数据!
  
  因为动画太大上传不了,我就用截图来说明步骤:
  
  2、在出现的导航器中,点击表格开头的图标,右侧会有这些表格的预览,选择你要导入的表格,点击右下角的“加载”
  
  3、然后就可以获取表格数据到Excel了,而且还支持手动刷新和自动刷新!
  
  VBA代码方法
  其实以上方法都不是真正的“爬虫”技能。要更灵活地获取数据,需要使用VBA代码。
  使用VBA获取网页数据当然可以结合以上三种方式,因为写代码就是可以判断和循环,就像上面的股票收盘价信息一样,可以循环获取多只股票的数据现在,会更方便!
  比如用VBA调用第二种方法,结合Excel的基本功能对数据进行组织提取,就可以得到历史天气数据!下面使用VBA方式获取天气数据~
  对于零售业来说,天气确实是一个非常重要的因素,它会影响客流和季节性产品的销售。因此,有必要对历史天气数据进行分析!
  如何批量获取天气数据?以下是获取北京2019年11月历史天气数据的结果:
  
  这需要使用 VBA 代码。上述方法不适合大量获取数据。不会码字?没关系,我已经写好解释了,你复制后稍加修改即可使用。(代码在文末)
  如果还想获取多个城市、多个年份、多个月份的数据,那么就需要考虑更多的情况。您可以根据文末提供的代码修改实现。 查看全部

  vba 网页数据抓取(如何轻松用Excel获取网页数据的一些初步的爬虫方法)
  通常我们使用Excel,经常处理本地数据。你知道 Excel 的排序、过滤、条件格式、数据透视表、图表等……但你可能不知道如何在 Excel 中获取网页上的数据!
  网络爬虫?!你可能认为你必须编写代码来实现这一点。其实除了代码,Excel还有一些现成的功能,让你不用代码也能获取网页的数据!
  下面的方法中,前三种不用写代码,最后一种需要代码,不过我已经写好了,可以用了,这样你也可以学会轻松使用Excel获取一些web的初步爬虫页面数据方法!
  功能方法
  从 Excel 2013 版本开始,引入了一些 Web 功能。下面两个函数可以一起使用,帮助我们从网页获取数据到Excel。
  FILTERXML(xml, xpath),从 XML 数据中返回指定的数据。网页上的许多数据都以 XML 的形式存在。该函数用于提取 XML 中的指定信息。
  WEBSERVICE(url),返回网页中的数据,可以理解为这个函数可以获取一堆XML字符串数据。
  例如下面的公式使用有道翻译的网站得到翻译结果:
  =FILTERXML(WEBSERVICE(";i="&amp;B2&amp;"&amp;doctype=xml&amp;version"),"//translation")
  
  如果你把上面的公式复制到Excel,你只需要在B2单元格输入你要翻译的内容,公式就会把翻译结果返回给你!
  
  是不是觉得超级方便!对于外部数据的轻量级连接,这个函数方式还是比较方便的。
  除了翻译,使用此功能还可以协助您进行股票交易!我在工作,不方便使用手机或阅读财经网页,但我想关注实时股价。我怎样才能打破它?
  把下面的公式复制到B1单元格,然后在A1单元格输入你关心的股票代码,B1就可以显示实时股价了,想刷新的时候按F9就行了~
  =VALUE(TRIM(MID(SUBSTITUTE(WEBSERVICE("/stockdata/stock_quote.aspx?stocklist="&amp;A1&amp;"&amp;time=" &amp; TEXT(NOW(), "hhmmss"))),",",REPT(" ",9 9)),2*99,111)))
  当你在专心看Excel工作(chao)工作(gu)时,即使老板突然路过,你也能从容应对!不要让你的老板知道这个技能!
  但是你也需要注意使用这个公式。首先,您必须确保您的计算机可以正常连接到 Internet。另外,如果你翻译调整了网页代码,或者网站的入口发生了变化,上面的公式也会失效,你需要重新研究一下逻辑。写公式~
  旧版网页查询功能
  在Excel 2016之前,一直有获取网页数据的功能,在Excel 2016推出PQ后隐藏了,但是还是可以手动调出来的!
  手动方法可以从“选项”中的“数据”设置其显示,也可以直接按快捷键Alt+D+D+W(注:不需要同时按,直接按依次进行,就可以了!),会弹出如下界面:
  
  然后我们只需要输入网页地址,如图所示地址为#06f01。
  这个功能可以帮助我们识别网页中的表格,然后我们只需要选中表格(点击黄色箭头选择),点击右下角的导入,就可以将数据导入Excel了!
  而且还可以刷新这张表,同时支持手动刷新和自动刷新,非常方便~
  
  这种方法的问题在于,并不是所有的网页都能获取数据,因为你可能无法获取到真实的网址,所以你应该尽量找到最深入的地址。你有办法爬取,别人有办法逆向,所以要不断获取网页的数据,需要密切关注网页是否发生变化~
  Power Query 获取网页数据
  从Excel 2016开始,PQ已经集成在Excel中,并且计划替换旧版本的数据查询和获取功能,所以使用PQ也可以帮助我们从网页中获取数据!
  
  因为动画太大上传不了,我就用截图来说明步骤:
  
  2、在出现的导航器中,点击表格开头的图标,右侧会有这些表格的预览,选择你要导入的表格,点击右下角的“加载”
  
  3、然后就可以获取表格数据到Excel了,而且还支持手动刷新和自动刷新!
  
  VBA代码方法
  其实以上方法都不是真正的“爬虫”技能。要更灵活地获取数据,需要使用VBA代码。
  使用VBA获取网页数据当然可以结合以上三种方式,因为写代码就是可以判断和循环,就像上面的股票收盘价信息一样,可以循环获取多只股票的数据现在,会更方便!
  比如用VBA调用第二种方法,结合Excel的基本功能对数据进行组织提取,就可以得到历史天气数据!下面使用VBA方式获取天气数据~
  对于零售业来说,天气确实是一个非常重要的因素,它会影响客流和季节性产品的销售。因此,有必要对历史天气数据进行分析!
  如何批量获取天气数据?以下是获取北京2019年11月历史天气数据的结果:
  
  这需要使用 VBA 代码。上述方法不适合大量获取数据。不会码字?没关系,我已经写好解释了,你复制后稍加修改即可使用。(代码在文末)
  如果还想获取多个城市、多个年份、多个月份的数据,那么就需要考虑更多的情况。您可以根据文末提供的代码修改实现。

vba 网页数据抓取(外汇课堂:利用IE控件完成网络数据的任务(图))

网站优化优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2022-04-13 21:04 • 来自相关话题

  vba 网页数据抓取(外汇课堂:利用IE控件完成网络数据的任务(图))
  大家好,今天我们将讲解《VBA信息获取与处理》教程第九题“使用IE捕获网络数据”的第二节。这个话题非常有用。知识点,希望大家能掌握。
  第二部分用IE捕捉资金主要流入的个股
  大家好,下面开始使用IE控件来完成抓取网络数据的任务。由于基础知识已经解释了很多,这里的代码解释会比较简单。大家可以参考我给出的代码注释来理解。
  实现场景:我们在做股票分析的时候,最关心的是资金的动向。是否有大量资金流入是大部分散户投资某只股票的重要依据。我们以财富网提供的主要资金流入存量数据作为数据提取的基础。该网站是:。
  1 使用IE实现主要资金流入数据捕获的思路分析
  为了抓取数据,我们先来看网页。以下是2020年6月11日网页提供的数据:
  
  我们的任务是将上述数据捕获到 EXCEL 表中。为了使用 IE 进行数据捕获,我们必须首先创建一个 IE 引用 CreateObject("InternetExplorer.Application")。然后IE打开给定的URL,.navigate""从网页中实现表号为5,然后将这个表中的数据提取出来。你可以回顾一下我之前关于表格的知识。从 web 文档中提取文档对象,使用 dmt.all.tags("table")(5) 找到这个表,然后使用 tb.Rows(i) .Cells(j).innertext 输出数据。
  2 应用IE实现主要资金流转入数据抓取的代码实现
  为了实现上述思路,我给出如下代码:
  Sub myNZ() '用IE捕捉Fortune Net旗下资金的主要流入股
  昏暗 ie, dmt, tb, i&amp;, j&amp;
  Set myIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象
  工作表(“SHEET1”)。选择
  行(“3:100”)。清除内容
  用我的IE
  .Visible = True '显示它
  .navigate ""'加载东风财富网主要资金流入情况
  Do Until .readystate = 4 '检查页面是否加载(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  set dmt = .document ' 将IE浏览器加载的页面文档赋值给dmt变量
  set tb = dmt.all.tags("table")(5) '通过索引号捕获表对象
  For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" &amp; tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  结束于
  消息框(“确定”)
  结束子
  代码截图:
  
  代码分析:
  1)Set myIE = CreateObject("InternetExplorer.Application") 这段代码是创建一个IE对象,或者后期绑定。引用很好。
  2) 工作表("SHEET1").Select
  行(“3:100”)。清除内容
  清除要填充的数据区域。
  3) 使用 myIE
  .Visible = True '显示它
  .导航“”
  以上代码加载IE中的“”URL,即东风财富网的主要资金流入。
  4) Do Until .readystate = 4 '检查页面是否加载完毕(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  这段代码是为了让页面加载完成,以便以后可以提取页面的数据
  5)Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量,其中dmt是一个对象变量。
  6) set tb = dmt.all.tags("table")(5) '通过索引号捕获table对象,这里的序号是我们对网页的分析得到的,你也可以使用工具来分析网页。
  7)For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" &amp; tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  提取表的数据,其中tb.Rows.Length - 1为行数;tb.Rows(i).Cells(j).innertext 是单元格的内容。
  3 应用IE实现资金主流入和数据抓取的变现效果
  我们点击页面的运行按钮,实现如下数据抓取:
  
  从实现的效果来看,完全满足我们场景的需求。
  回到本节知识点:如何提取页面文档中表格的数据?
  本节参考:009 worksheet.xlsm
  
  块编程思想的内涵:
  在我的系列书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,采用这种方案是很有必要的。其主要内涵:
  1 不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。
  2 建立自己的“块库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA的应用定义
  VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程:
  第一组:VBA代码解法是对VBA中各个知识点的讲解。总共147课,涵盖了初学者必备的大部分VBA知识点;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。
  您可以按照1→3→2→6→5或4→3→2→6→5的顺序根据以上信息逐步深入学习。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一下枯燥的感觉
  如太白诗云:百鸟高飞,孤云独闲。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!
  回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。 查看全部

  vba 网页数据抓取(外汇课堂:利用IE控件完成网络数据的任务(图))
  大家好,今天我们将讲解《VBA信息获取与处理》教程第九题“使用IE捕获网络数据”的第二节。这个话题非常有用。知识点,希望大家能掌握。
  第二部分用IE捕捉资金主要流入的个股
  大家好,下面开始使用IE控件来完成抓取网络数据的任务。由于基础知识已经解释了很多,这里的代码解释会比较简单。大家可以参考我给出的代码注释来理解。
  实现场景:我们在做股票分析的时候,最关心的是资金的动向。是否有大量资金流入是大部分散户投资某只股票的重要依据。我们以财富网提供的主要资金流入存量数据作为数据提取的基础。该网站是:。
  1 使用IE实现主要资金流入数据捕获的思路分析
  为了抓取数据,我们先来看网页。以下是2020年6月11日网页提供的数据:
  
  我们的任务是将上述数据捕获到 EXCEL 表中。为了使用 IE 进行数据捕获,我们必须首先创建一个 IE 引用 CreateObject("InternetExplorer.Application")。然后IE打开给定的URL,.navigate""从网页中实现表号为5,然后将这个表中的数据提取出来。你可以回顾一下我之前关于表格的知识。从 web 文档中提取文档对象,使用 dmt.all.tags("table")(5) 找到这个表,然后使用 tb.Rows(i) .Cells(j).innertext 输出数据。
  2 应用IE实现主要资金流转入数据抓取的代码实现
  为了实现上述思路,我给出如下代码:
  Sub myNZ() '用IE捕捉Fortune Net旗下资金的主要流入股
  昏暗 ie, dmt, tb, i&amp;, j&amp;
  Set myIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象
  工作表(“SHEET1”)。选择
  行(“3:100”)。清除内容
  用我的IE
  .Visible = True '显示它
  .navigate ""'加载东风财富网主要资金流入情况
  Do Until .readystate = 4 '检查页面是否加载(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  set dmt = .document ' 将IE浏览器加载的页面文档赋值给dmt变量
  set tb = dmt.all.tags("table")(5) '通过索引号捕获表对象
  For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" &amp; tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  结束于
  消息框(“确定”)
  结束子
  代码截图:
  
  代码分析:
  1)Set myIE = CreateObject("InternetExplorer.Application") 这段代码是创建一个IE对象,或者后期绑定。引用很好。
  2) 工作表("SHEET1").Select
  行(“3:100”)。清除内容
  清除要填充的数据区域。
  3) 使用 myIE
  .Visible = True '显示它
  .导航“”
  以上代码加载IE中的“”URL,即东风财富网的主要资金流入。
  4) Do Until .readystate = 4 '检查页面是否加载完毕(4表示完全加载)
  DoEvents '在循环中将工作权限返回给系统,避免“软崩溃”
  环形
  这段代码是为了让页面加载完成,以便以后可以提取页面的数据
  5)Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量,其中dmt是一个对象变量。
  6) set tb = dmt.all.tags("table")(5) '通过索引号捕获table对象,这里的序号是我们对网页的分析得到的,你也可以使用工具来分析网页。
  7)For i = 2 To tb.Rows.Length - 1 '遍历每一行
  For j = 0 To tb.Rows(i).Cells.Length - 1 '遍历每行中的每个单元格
  Cells(i + 1, j + 1) = "'" &amp; tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格
  下一个
  下一个
  提取表的数据,其中tb.Rows.Length - 1为行数;tb.Rows(i).Cells(j).innertext 是单元格的内容。
  3 应用IE实现资金主流入和数据抓取的变现效果
  我们点击页面的运行按钮,实现如下数据抓取:
  
  从实现的效果来看,完全满足我们场景的需求。
  回到本节知识点:如何提取页面文档中表格的数据?
  本节参考:009 worksheet.xlsm
  
  块编程思想的内涵:
  在我的系列书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,采用这种方案是很有必要的。其主要内涵:
  1 不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。
  2 建立自己的“块库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA的应用定义
  VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程:
  第一组:VBA代码解法是对VBA中各个知识点的讲解。总共147课,涵盖了初学者必备的大部分VBA知识点;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。
  您可以按照1→3→2→6→5或4→3→2→6→5的顺序根据以上信息逐步深入学习。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一下枯燥的感觉
  如太白诗云:百鸟高飞,孤云独闲。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!
  回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。

vba 网页数据抓取(HTML代码应将所选页面的所有数据复制到sheet1链接 )

网站优化优采云 发表了文章 • 0 个评论 • 64 次浏览 • 2022-04-01 19:07 • 来自相关话题

  vba 网页数据抓取(HTML代码应将所选页面的所有数据复制到sheet1链接
)
  我不确定错误来自哪里,我明白了。
  以下代码应该会有所帮助,它将指定页面的表格内容打印到调试窗口。
  以下代码应将所选页面的所有数据复制到 sheet1
  您需要在 VBA 编辑器中添加一些引用才能使用它。(工具菜单,参考,然后找到并选择它们)Microsoft HTML 对象库和 Microsoft Internet 控件
  Const MaxPage = 2 ' set to 26 (or however many there are) - at 2 for testing purposes
Dim Browser As InternetExplorer
Sub Start()
Dim Page As Integer: Page = 1 ' start at page 1
Dim PageDocument As IHTMLDocument
Dim RecordRow As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1") ' output sheet
If Browser Is Nothing Then
Set Browser = New InternetExplorer
End If
Dim oRow As Integer: oRow = 2 ' begin output at row 2 (account for header)
Dim Record As Integer
For Page = 1 To MaxPage
LoadPage Page
For Record = 0 To 99 ' zero index, 100 items (1-99)
Set PageDocument = Browser.Document
Set RecordRow = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(Record).getElementsByTagName("td")
Sheet.Cells(oRow, 1).Value = Trim(RecordRow(0).innerText)
Sheet.Cells(oRow, 2).Value = Trim(RecordRow(1).innerText)
Sheet.Cells(oRow, 3).Value = Trim(RecordRow(2).innerText)
Sheet.Cells(oRow, 4).Value = Trim(RecordRow(3).innerText)
Sheet.Cells(oRow, 5).Value = Trim(RecordRow(4).innerText)
Sheet.Cells(oRow, 6).Value = Trim(RecordRow(5).innerText)
oRow = oRow + 1
Next Record
Next Page
Browser.Quit
End Sub
Sub LoadPage(ByVal PageNumber As Integer)
Debug.Print "Navigating to Page #" & CStr(PageNumber)
Browser.navigate "https://www.worldathletics.org ... ot%3B & CStr(PageNumber)
While Browser.readyState 4 Or Browser.Busy: DoEvents: Wend
Debug.Print "Navigation Complete"
End Sub
  更新代码
  Index Out-of-Bound 错误很可能是由于硬编码的索引,如果页面没有 99 条记录则失败,或者如果记录没有 5 个字段则失败。下面的代码去除了索引,只抓取了它找到的每一行和单元格。你不应该得到索引错误,但输出可能是锯齿状的。
  进一步更新
  462 错误是由 Browser.Quit 引起的。这会关闭浏览器,但不会设置对 Nothing 的引用,因此当您再次运行代码时,它会尝试使用不存在的浏览器。最后将其显式设置为 null 可以解决此问题。
  竞争对手列中没有链接,整行都有一个由其他东西处理的数据 url。但是,可以轻松访问该 URL。
  Sub NewStart()
Dim PageDocument As IHTMLDocument
Dim Records As IHTMLElementCollection
Dim Record As IHTMLElement
Dim RecordItems As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim OutputRow As Integer: OutputRow = 2
Dim OutputColumn As Integer
Dim Page As Integer
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
If Browser Is Nothing Then
Set Browser = New InternetExplorer
Browser.Visible = True
End If
For Page = 1 To MaxPage
LoadPage Page
Set PageDocument = Browser.Document
Set Records = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")
For Each Record In Records
Set RecordItems = Record.getElementsByTagName("td")
OutputColumn = 1
For Each RecordItem In RecordItems
Sheet.Cells(OutputRow, OutputColumn).Value = Trim(RecordItem.innerText)
OutputColumn = OutputColumn + 1
Next RecordItem
Sheet.Cells(OutputRow, OutputColumn).Value = "http://worldathletics.org/" & Record.getAttribute("data-athlete-url") ' This will add the link after the last column
OutputRow = OutputRow + 1
Next Record
Next Page
Browser.Quit
Set Browser = Nothing ' This will fix the 462 error
End Sub 查看全部

  vba 网页数据抓取(HTML代码应将所选页面的所有数据复制到sheet1链接
)
  我不确定错误来自哪里,我明白了。
  以下代码应该会有所帮助,它将指定页面的表格内容打印到调试窗口。
  以下代码应将所选页面的所有数据复制到 sheet1
  您需要在 VBA 编辑器中添加一些引用才能使用它。(工具菜单,参考,然后找到并选择它们)Microsoft HTML 对象库和 Microsoft Internet 控件
  Const MaxPage = 2 ' set to 26 (or however many there are) - at 2 for testing purposes
Dim Browser As InternetExplorer
Sub Start()
Dim Page As Integer: Page = 1 ' start at page 1
Dim PageDocument As IHTMLDocument
Dim RecordRow As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1") ' output sheet
If Browser Is Nothing Then
Set Browser = New InternetExplorer
End If
Dim oRow As Integer: oRow = 2 ' begin output at row 2 (account for header)
Dim Record As Integer
For Page = 1 To MaxPage
LoadPage Page
For Record = 0 To 99 ' zero index, 100 items (1-99)
Set PageDocument = Browser.Document
Set RecordRow = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")(Record).getElementsByTagName("td")
Sheet.Cells(oRow, 1).Value = Trim(RecordRow(0).innerText)
Sheet.Cells(oRow, 2).Value = Trim(RecordRow(1).innerText)
Sheet.Cells(oRow, 3).Value = Trim(RecordRow(2).innerText)
Sheet.Cells(oRow, 4).Value = Trim(RecordRow(3).innerText)
Sheet.Cells(oRow, 5).Value = Trim(RecordRow(4).innerText)
Sheet.Cells(oRow, 6).Value = Trim(RecordRow(5).innerText)
oRow = oRow + 1
Next Record
Next Page
Browser.Quit
End Sub
Sub LoadPage(ByVal PageNumber As Integer)
Debug.Print "Navigating to Page #" & CStr(PageNumber)
Browser.navigate "https://www.worldathletics.org ... ot%3B & CStr(PageNumber)
While Browser.readyState 4 Or Browser.Busy: DoEvents: Wend
Debug.Print "Navigation Complete"
End Sub
  更新代码
  Index Out-of-Bound 错误很可能是由于硬编码的索引,如果页面没有 99 条记录则失败,或者如果记录没有 5 个字段则失败。下面的代码去除了索引,只抓取了它找到的每一行和单元格。你不应该得到索引错误,但输出可能是锯齿状的。
  进一步更新
  462 错误是由 Browser.Quit 引起的。这会关闭浏览器,但不会设置对 Nothing 的引用,因此当您再次运行代码时,它会尝试使用不存在的浏览器。最后将其显式设置为 null 可以解决此问题。
  竞争对手列中没有链接,整行都有一个由其他东西处理的数据 url。但是,可以轻松访问该 URL。
  Sub NewStart()
Dim PageDocument As IHTMLDocument
Dim Records As IHTMLElementCollection
Dim Record As IHTMLElement
Dim RecordItems As IHTMLElementCollection
Dim RecordItem As IHTMLElement
Dim OutputRow As Integer: OutputRow = 2
Dim OutputColumn As Integer
Dim Page As Integer
Dim Sheet As Worksheet: Set Sheet = ThisWorkbook.Worksheets("Sheet1")
If Browser Is Nothing Then
Set Browser = New InternetExplorer
Browser.Visible = True
End If
For Page = 1 To MaxPage
LoadPage Page
Set PageDocument = Browser.Document
Set Records = PageDocument.getElementById("toplists").getElementsByTagName("table")(0).getElementsByTagName("tbody")(0).getElementsByTagName("tr")
For Each Record In Records
Set RecordItems = Record.getElementsByTagName("td")
OutputColumn = 1
For Each RecordItem In RecordItems
Sheet.Cells(OutputRow, OutputColumn).Value = Trim(RecordItem.innerText)
OutputColumn = OutputColumn + 1
Next RecordItem
Sheet.Cells(OutputRow, OutputColumn).Value = "http://worldathletics.org/" & Record.getAttribute("data-athlete-url") ' This will add the link after the last column
OutputRow = OutputRow + 1
Next Record
Next Page
Browser.Quit
Set Browser = Nothing ' This will fix the 462 error
End Sub

vba 网页数据抓取( 263Python开发的exe可执行程序-数据采集/电商)

网站优化优采云 发表了文章 • 0 个评论 • 116 次浏览 • 2022-03-22 14:49 • 来自相关话题

  vba 网页数据抓取(
263Python开发的exe可执行程序-数据采集/电商)
  
  数据采集/电商数据采集/超大网站采集' /&gt;
  数据采集/电商数据采集/超大网站采集
  热度:263
  Python开发的exe可执行程序,可视化界面操作,无需安装;用于速卖通平台商品信息采集,导出、替换;1、采集速卖通商品数据:标题、颜色、尺寸、描述、品牌信息等;2、采集可以获取给定分类页面的速卖通商品url;3、采集输出对应的Excel表格和图片,可以自定义输出模板或给定一个固定的表头,根据表头内容填写。导出后可保存模板导出记录,方便下次根据模板导出数据;4、品牌更换区可批量更换此采集表格中品牌的内容可以为空或我指定的名称;
  
  数据采集/互联网数据采集/电子商务' /&gt;
  数据采集/互联网数据采集/电子商务
  热量:704
  Python+Django开发的网页版展示分析;一个网站的中奖结果,结果必须一致;分析采集之后的数据;
  
  数据采集及数据监控系统' /&gt;
  微信公众号数据采集及数据监控系统
  热量:286
  采集System:用Python开发的可执行程序;数据管理系统:基于PHP+MYSQL架构的在线WEB解决方案,可部署在内网或外网访问;随着移动互联网的普及,越来越多的人喜欢通过微信进行交流,而微信自媒体平台也逐渐兴起,对于人们日常关心的话题也越来越展现出巨大的商机。本项目涉及微信数据采集和微信数据分析两个子系统。前者传递指定的关键词,采集数据需要每天定时关注,后者传递采集的数据。数据,以及数据统计分析的相关指标; 查看全部

  vba 网页数据抓取(
263Python开发的exe可执行程序-数据采集/电商)
  
  数据采集/电商数据采集/超大网站采集' /&gt;
  数据采集/电商数据采集/超大网站采集
  热度:263
  Python开发的exe可执行程序,可视化界面操作,无需安装;用于速卖通平台商品信息采集,导出、替换;1、采集速卖通商品数据:标题、颜色、尺寸、描述、品牌信息等;2、采集可以获取给定分类页面的速卖通商品url;3、采集输出对应的Excel表格和图片,可以自定义输出模板或给定一个固定的表头,根据表头内容填写。导出后可保存模板导出记录,方便下次根据模板导出数据;4、品牌更换区可批量更换此采集表格中品牌的内容可以为空或我指定的名称;
  
  数据采集/互联网数据采集/电子商务' /&gt;
  数据采集/互联网数据采集/电子商务
  热量:704
  Python+Django开发的网页版展示分析;一个网站的中奖结果,结果必须一致;分析采集之后的数据;
  
  数据采集及数据监控系统' /&gt;
  微信公众号数据采集及数据监控系统
  热量:286
  采集System:用Python开发的可执行程序;数据管理系统:基于PHP+MYSQL架构的在线WEB解决方案,可部署在内网或外网访问;随着移动互联网的普及,越来越多的人喜欢通过微信进行交流,而微信自媒体平台也逐渐兴起,对于人们日常关心的话题也越来越展现出巨大的商机。本项目涉及微信数据采集和微信数据分析两个子系统。前者传递指定的关键词,采集数据需要每天定时关注,后者传递采集的数据。数据,以及数据统计分析的相关指标;

vba 网页数据抓取(一个空Python应用程序图步骤及引入关键包图)

网站优化优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2022-03-19 00:23 • 来自相关话题

  vba 网页数据抓取(一个空Python应用程序图步骤及引入关键包图)
  在VS环境下,打开VS后点击菜单【文件】/【新建】/【项目】或在页面选择“新建项目”,如下图:
  
  
  由于可以创建的项目类别比较多,而我们这里只需要创建Python应用,我们可以通过上面标注的步骤1进行筛选,然后按照步骤2在列表中选择“Python应用”,点击“下一步” ”。
  
  在“配置新项目”中,也按照上述步骤进行设置。第二步,“位置”可以根据自己的需要进行设置。同样,步骤1中的“项目名称”也可以自己定义。
  这样,我们就创建了一个空的 Python 应用程序,并且会自动创建一个 MySpider.py 文件,在“解决方案管理器”中可以看到,该文件以粗体显示,如下图:
  
  剩下的就是将我们的程序代码添加到这个文件中。
  包的介绍和介绍
  上一篇爬虫开篇提到,我们的爬虫需要引入几个关键包,如下截图所示:
  
  在“解决方案资源管理器”中双击“MySpider.py”文件,将上述信息添加到打开的文件中。
  特别注意,别忘了加上第一行,这个在开头就提到了,它的作用是告诉解释器,这个文件的编码方式。
  BeautifulSoup,这个模块在 bs4 包中。我们将使用它的功能是网页解析和网页数据获取。从字面上看,它是一种“美丽的汤”。
  re,这就是正则表达式模块,它的全称是Regular Expression,正则在开发和实践中的应用是非常广泛的,你可能对“正则”这个名字不是很熟悉,但你也或多或少地使用了不过,对于比如我们在DOS下使用的通配符其实就是正则表达式的一种形式,还有我们在Word中使用的查找/替换功能。不知大家有没有注意到,有一个“Use wildcards”,如果勾选了这个选项,那么你要查找或替换的字符串就可以使用正则表达式了。
  
  正则表达式是一种对字符串进行操作的逻辑公式,就是用一些预先定义好的特定字符以及这些特定字符的组合形成一个“正则字符串”,用来表达对应的字符。字符串的过滤逻辑。
  如果一个人能完全理解规律,这里基本没有灵活应用的“美汤”。在本文中,这不是重点,如果您需要了解更多信息,可以在百度上搜索“正则表达式”。
  urllib.request,网页请求模块,这是网页数据获取的关键,它模拟了我们人们通过浏览器访问一个网址,然后获取网页上所有信息的过程。从它的字面意思可以猜到,就是完成一个对特定URL(即页面所在的网站服务器)的请求,然后让服务器返回你需要并且可以提供的数据根据你的要求。,数据信息以html文档的形式返回。
  urllib.error,这是urllib的错误处理模块。
  xlwt,这个模块以后会更多的处理,是一个关于如何操作熟悉的Excel的模块。这也是网上各种python培训机构用来吸引初学者的噱头。通过python,可以完全控制excel,然后制作各种漂亮的图表。什么能让你摆脱excel,不再需要加班。数据之类的东西完全是个噱头。仔细想想就知道Excel是微软开发的一款办公软件。它提供了 Excel 的所有外部接口。您可以根据这些公共接口控制 Excel。难道你不比微软更了解 Excel 吗?只是你多了一种控制excel的方法。根据我这么多年使用excel的经验,
  再多说几句,我们继续。
  了解网页请求的流程
  下面我们用“谷歌”浏览器来简单介绍一下我们每次访问一个网站时会发生什么(如果你使用的是其他浏览器,你也可以检查一下是否有类似谷歌浏览器的功能,如果没有,你也可以上网下载谷歌浏览器。)
  打开浏览器,然后按F12键(或者Ctrl+Shift+I,或者点击网页中右键快捷菜单最后一项“勾选”),原来的网页显示页面会分成两部分,一一部分是网页展示部分(红色区域A),另一部分(绿色区域B+蓝色区域C)是我们要用来查看网页后面内容的浏览器集成工具,也是我们需要了解实现爬虫,我们首先选择“网络”页面。
  第二部分分为B区和C区。B区是网页本身的源代码,但是这个源代码已经被工具结构化和调整过,方便开发者快速定位各个节点;C区记录了网页每一次在段中发生了什么,也就是我们的浏览器和网站的交互,记录了网页向网站发送了什么信息,网站有什么信息返回,等等。这些都是短信。
  
  此时我们点击网页的“刷新”按钮或者直接在地址栏回车,也就是让网页重新加载,我们看看C区为我们记录了什么。
  
  之后,在时间轴中,用鼠标点击最左边的时间槽,可以看到这是浏览器与网站的第一次交互信息,可以从Request URL(请求URL)中获取一般部分。您浏览器地址栏中的我们的网址信息;
  请求方法是 GET;请求方法有以下6种:
  
  从上面对各个请求方法的简单说明可以看出,并不是所有的方法你都有权限使用,通常出于安全考虑,网站一般只开放有限的请求方法,比如GET、POST、HEAD和其他可能导致安全风险的请求方法将被禁止或保留给网站后端内部使用。通常,我们主要向 GET 和 POST 发送请求。
  在 Request Headers 请求头中,我们可以看到以下关键信息:
  Accept:告诉网站服务器我可以接受什么信息;
  Accept-Encoding:可接受的编码;
  Cookie:通常用于与服务器建立多个会话的信息;
  Host:初始URL中的主机;
  User-Agent:浏览器类型,告诉我我使用的是什么类型的浏览器。使用这个也可以达到欺骗服务器的目的。也就是说,如果你想直接用python访问,它可能会被认为是爬虫,会被服务器拒绝,如果你替换这个属性的值,你就简单的愚弄了服务器。
  其实请求头中还有很多其他类型的参数,这里就不一一说明了。如果您需要它,您可以放心地在网上找到它。我们通常使用上面列出的那些,加上一个Referer。
  向服务器发送请求信息后,服务器会根据您发送的请求返回相应的信息。从下一个时隙可以看出,我们收到了很多网页元素(下图第二部分的方框)。,包括css、js和png等文件),最后组成我们在网页上看到的内容。
  
  查看网页元素
  接下来,我们可以从刚才的“网络”页面进入“元素”,查看我们最想获取的网页信息。“元素”是由该工具结构化和显示的网页的源代码信息。中间的“查看网页源代码”也可以看到,但是这种方法看到的源代码不是结构化的,看起来比较费劲。
  
  我们仍然在这里浏览“元素”。
  
  当我们需要查看网页的哪个部分的信息时,我们可以点击下图中的小箭头图标,然后点击网页上想要查看的内容,如:
  
  您可以在Elements中快速定位源代码的位置,方便我们通过代码获取对应位置的信息。
  其余信息也可以通过这种方式查看。
  获取电影名称
  接下来,我们以首先获取第一页的电影名称为例。
  我们先分析一下网页的源码,找到对应的规则。我们还是点击小箭头,看看整部电影的哪一部分信息在网页的源代码中。在Elements中,可以快速定位到下图中B框的选中部分。自己观察,结合整个网页的显示也可以看到,一页有25条电影信息,都在li等标签定义的列表中,B框选中的部分是我们的第一部电影。,而在第一个列表li中,在class=”item”的div标签中,其他电影的位置在源码中也呈现出相同的结构,也就是说我们只需要获取每个item中的信息即可这个网页的信息可以进一步获取每部电影的内容。
  
  思路确定后,开始,就可以按照步骤开始写代码了:
  第一步是通过URL向网站发送相应的请求,然后我们得到网站返回的网页的源代码,也可以称为网页文件或网页数据。
  
  每一行代码的功能基本都有注释说明,请参考。
  在head字典变量中,我们也可以根据实际需要添加相应的信息,比如Referer、Host等请求字段。确保字段名称拼写正确,并且不能有多余的空格,否则 网站 服务器将无法识别。
  响应变量是服务器返回的网页数据,很多情况下是经过编码的,尤其是收录汉字的网页,所以要将其变成我们可以直接读取的字符串,我们可以使用decode方法对其进行解码。
  这一步之后,我们就可以启动VS的调试功能,看看我们的代码运行结果是否符合我们的预期。直接按F10键单步执行代码,然后可以看到程序从第一行开始执行,并以黄色高亮显示,如下图:
  
  继续按 F10 键,黄色高亮处会跳转到下一个可执行行。当然也可以在要查看的行设置断点,在断点行按F5停止程序执行。设置断点的方法是将当前光标移动到你要设置断点的那一行,然后按F9,你会看到代码编辑区最左边会添加一个断点和一个红点会出现,如下:
  
  我们直接跳过中间的内容,让程序直接运行到我们设置的断点行,按F5,如下图:
  
  我们可以通过监控窗口看到响应变量的内容。
  如何打开监视窗口:
  
  然后将变量拖放到监视框中,如下所示:
  01.gif
  此时,程序还没有执行当前断点行。我们可以改为F10单步走线。当高亮跳转到下一行时,响应就有内容了,如下:
  
  同样的方法,我们也可以在监控框中添加更多的变量,比如sHtml,因为此时响应已经有数据了,但是这个数据只是一个对象。添加 sHtml 后,我们可以通过 F10 单步执行我们的代码对信息进行解码以获得人类可读的内容:
  
  对比响应,我们可以在 sHtml 的值中看到熟悉的 html 源码。下一步是解释这个源代码来分离我们需要的信息。
  第二步,在得到的网页文件中(也就是刚刚得到的sHtml变量),我们可以使用“美汤”进一步分析,得到准确的内容。
  
  ptnTitle 是我们定义的用于获取电影名称的正则表达式。sHtml文本内容由BeautifulSoup的html解析器解析,然后解析结果使用find_all方法将所有class为item的div分隔开形成一个list,通过for循环出每个list中的元素,特别注意参数中的class_=”item”,其中class后面有下划线,主要目的是表示class属性,否则会报错,因为class这个词在python语言中是保留关键字。
  然后,在获取到item中的所有信息后,我们需要通过之前定义的正则表达式来精确匹配我们的电影名称。
  得到片名后,还需要做一些处理,防止电影名出现一些不想要的字符串,比如名字开头和结尾多余的空格,名字中可能出现的斜线“/”。因为电影名除了中文名外可能还收录其他外文名,比如英文、日文等,所以我们需要做出判断,可以把中文名和外文名一起取出来,如果没有外文名,我们will 表示为空。
  写完之后,可以再次开始调试,看看是不是我们需要的结果。同理,是否可以正常获取本页所有电影名。
  通过调试我们可以看到,通过查看程序最后的dataList列表变量,我们得到了第一页所有电影的名字。
  
  既然可以成功获取到电影名,那我就可以用同样的方法获取一个页面上所有电影的其他信息了,比如电影的详细介绍,评分,评分人数,导演等。您可以看到网页上的所有信息以及相应的信息超链接。
  项目源码可通过微信扫描下方二维码关注查看历史文章,也可提前获取关注文章。 查看全部

  vba 网页数据抓取(一个空Python应用程序图步骤及引入关键包图)
  在VS环境下,打开VS后点击菜单【文件】/【新建】/【项目】或在页面选择“新建项目”,如下图:
  
  
  由于可以创建的项目类别比较多,而我们这里只需要创建Python应用,我们可以通过上面标注的步骤1进行筛选,然后按照步骤2在列表中选择“Python应用”,点击“下一步” ”。
  
  在“配置新项目”中,也按照上述步骤进行设置。第二步,“位置”可以根据自己的需要进行设置。同样,步骤1中的“项目名称”也可以自己定义。
  这样,我们就创建了一个空的 Python 应用程序,并且会自动创建一个 MySpider.py 文件,在“解决方案管理器”中可以看到,该文件以粗体显示,如下图:
  
  剩下的就是将我们的程序代码添加到这个文件中。
  包的介绍和介绍
  上一篇爬虫开篇提到,我们的爬虫需要引入几个关键包,如下截图所示:
  
  在“解决方案资源管理器”中双击“MySpider.py”文件,将上述信息添加到打开的文件中。
  特别注意,别忘了加上第一行,这个在开头就提到了,它的作用是告诉解释器,这个文件的编码方式。
  BeautifulSoup,这个模块在 bs4 包中。我们将使用它的功能是网页解析和网页数据获取。从字面上看,它是一种“美丽的汤”。
  re,这就是正则表达式模块,它的全称是Regular Expression,正则在开发和实践中的应用是非常广泛的,你可能对“正则”这个名字不是很熟悉,但你也或多或少地使用了不过,对于比如我们在DOS下使用的通配符其实就是正则表达式的一种形式,还有我们在Word中使用的查找/替换功能。不知大家有没有注意到,有一个“Use wildcards”,如果勾选了这个选项,那么你要查找或替换的字符串就可以使用正则表达式了。
  
  正则表达式是一种对字符串进行操作的逻辑公式,就是用一些预先定义好的特定字符以及这些特定字符的组合形成一个“正则字符串”,用来表达对应的字符。字符串的过滤逻辑。
  如果一个人能完全理解规律,这里基本没有灵活应用的“美汤”。在本文中,这不是重点,如果您需要了解更多信息,可以在百度上搜索“正则表达式”。
  urllib.request,网页请求模块,这是网页数据获取的关键,它模拟了我们人们通过浏览器访问一个网址,然后获取网页上所有信息的过程。从它的字面意思可以猜到,就是完成一个对特定URL(即页面所在的网站服务器)的请求,然后让服务器返回你需要并且可以提供的数据根据你的要求。,数据信息以html文档的形式返回。
  urllib.error,这是urllib的错误处理模块。
  xlwt,这个模块以后会更多的处理,是一个关于如何操作熟悉的Excel的模块。这也是网上各种python培训机构用来吸引初学者的噱头。通过python,可以完全控制excel,然后制作各种漂亮的图表。什么能让你摆脱excel,不再需要加班。数据之类的东西完全是个噱头。仔细想想就知道Excel是微软开发的一款办公软件。它提供了 Excel 的所有外部接口。您可以根据这些公共接口控制 Excel。难道你不比微软更了解 Excel 吗?只是你多了一种控制excel的方法。根据我这么多年使用excel的经验,
  再多说几句,我们继续。
  了解网页请求的流程
  下面我们用“谷歌”浏览器来简单介绍一下我们每次访问一个网站时会发生什么(如果你使用的是其他浏览器,你也可以检查一下是否有类似谷歌浏览器的功能,如果没有,你也可以上网下载谷歌浏览器。)
  打开浏览器,然后按F12键(或者Ctrl+Shift+I,或者点击网页中右键快捷菜单最后一项“勾选”),原来的网页显示页面会分成两部分,一一部分是网页展示部分(红色区域A),另一部分(绿色区域B+蓝色区域C)是我们要用来查看网页后面内容的浏览器集成工具,也是我们需要了解实现爬虫,我们首先选择“网络”页面。
  第二部分分为B区和C区。B区是网页本身的源代码,但是这个源代码已经被工具结构化和调整过,方便开发者快速定位各个节点;C区记录了网页每一次在段中发生了什么,也就是我们的浏览器和网站的交互,记录了网页向网站发送了什么信息,网站有什么信息返回,等等。这些都是短信。
  
  此时我们点击网页的“刷新”按钮或者直接在地址栏回车,也就是让网页重新加载,我们看看C区为我们记录了什么。
  
  之后,在时间轴中,用鼠标点击最左边的时间槽,可以看到这是浏览器与网站的第一次交互信息,可以从Request URL(请求URL)中获取一般部分。您浏览器地址栏中的我们的网址信息;
  请求方法是 GET;请求方法有以下6种:
  
  从上面对各个请求方法的简单说明可以看出,并不是所有的方法你都有权限使用,通常出于安全考虑,网站一般只开放有限的请求方法,比如GET、POST、HEAD和其他可能导致安全风险的请求方法将被禁止或保留给网站后端内部使用。通常,我们主要向 GET 和 POST 发送请求。
  在 Request Headers 请求头中,我们可以看到以下关键信息:
  Accept:告诉网站服务器我可以接受什么信息;
  Accept-Encoding:可接受的编码;
  Cookie:通常用于与服务器建立多个会话的信息;
  Host:初始URL中的主机;
  User-Agent:浏览器类型,告诉我我使用的是什么类型的浏览器。使用这个也可以达到欺骗服务器的目的。也就是说,如果你想直接用python访问,它可能会被认为是爬虫,会被服务器拒绝,如果你替换这个属性的值,你就简单的愚弄了服务器。
  其实请求头中还有很多其他类型的参数,这里就不一一说明了。如果您需要它,您可以放心地在网上找到它。我们通常使用上面列出的那些,加上一个Referer。
  向服务器发送请求信息后,服务器会根据您发送的请求返回相应的信息。从下一个时隙可以看出,我们收到了很多网页元素(下图第二部分的方框)。,包括css、js和png等文件),最后组成我们在网页上看到的内容。
  
  查看网页元素
  接下来,我们可以从刚才的“网络”页面进入“元素”,查看我们最想获取的网页信息。“元素”是由该工具结构化和显示的网页的源代码信息。中间的“查看网页源代码”也可以看到,但是这种方法看到的源代码不是结构化的,看起来比较费劲。
  
  我们仍然在这里浏览“元素”。
  
  当我们需要查看网页的哪个部分的信息时,我们可以点击下图中的小箭头图标,然后点击网页上想要查看的内容,如:
  
  您可以在Elements中快速定位源代码的位置,方便我们通过代码获取对应位置的信息。
  其余信息也可以通过这种方式查看。
  获取电影名称
  接下来,我们以首先获取第一页的电影名称为例。
  我们先分析一下网页的源码,找到对应的规则。我们还是点击小箭头,看看整部电影的哪一部分信息在网页的源代码中。在Elements中,可以快速定位到下图中B框的选中部分。自己观察,结合整个网页的显示也可以看到,一页有25条电影信息,都在li等标签定义的列表中,B框选中的部分是我们的第一部电影。,而在第一个列表li中,在class=”item”的div标签中,其他电影的位置在源码中也呈现出相同的结构,也就是说我们只需要获取每个item中的信息即可这个网页的信息可以进一步获取每部电影的内容。
  
  思路确定后,开始,就可以按照步骤开始写代码了:
  第一步是通过URL向网站发送相应的请求,然后我们得到网站返回的网页的源代码,也可以称为网页文件或网页数据。
  
  每一行代码的功能基本都有注释说明,请参考。
  在head字典变量中,我们也可以根据实际需要添加相应的信息,比如Referer、Host等请求字段。确保字段名称拼写正确,并且不能有多余的空格,否则 网站 服务器将无法识别。
  响应变量是服务器返回的网页数据,很多情况下是经过编码的,尤其是收录汉字的网页,所以要将其变成我们可以直接读取的字符串,我们可以使用decode方法对其进行解码。
  这一步之后,我们就可以启动VS的调试功能,看看我们的代码运行结果是否符合我们的预期。直接按F10键单步执行代码,然后可以看到程序从第一行开始执行,并以黄色高亮显示,如下图:
  
  继续按 F10 键,黄色高亮处会跳转到下一个可执行行。当然也可以在要查看的行设置断点,在断点行按F5停止程序执行。设置断点的方法是将当前光标移动到你要设置断点的那一行,然后按F9,你会看到代码编辑区最左边会添加一个断点和一个红点会出现,如下:
  
  我们直接跳过中间的内容,让程序直接运行到我们设置的断点行,按F5,如下图:
  
  我们可以通过监控窗口看到响应变量的内容。
  如何打开监视窗口:
  
  然后将变量拖放到监视框中,如下所示:
  01.gif
  此时,程序还没有执行当前断点行。我们可以改为F10单步走线。当高亮跳转到下一行时,响应就有内容了,如下:
  
  同样的方法,我们也可以在监控框中添加更多的变量,比如sHtml,因为此时响应已经有数据了,但是这个数据只是一个对象。添加 sHtml 后,我们可以通过 F10 单步执行我们的代码对信息进行解码以获得人类可读的内容:
  
  对比响应,我们可以在 sHtml 的值中看到熟悉的 html 源码。下一步是解释这个源代码来分离我们需要的信息。
  第二步,在得到的网页文件中(也就是刚刚得到的sHtml变量),我们可以使用“美汤”进一步分析,得到准确的内容。
  
  ptnTitle 是我们定义的用于获取电影名称的正则表达式。sHtml文本内容由BeautifulSoup的html解析器解析,然后解析结果使用find_all方法将所有class为item的div分隔开形成一个list,通过for循环出每个list中的元素,特别注意参数中的class_=”item”,其中class后面有下划线,主要目的是表示class属性,否则会报错,因为class这个词在python语言中是保留关键字。
  然后,在获取到item中的所有信息后,我们需要通过之前定义的正则表达式来精确匹配我们的电影名称。
  得到片名后,还需要做一些处理,防止电影名出现一些不想要的字符串,比如名字开头和结尾多余的空格,名字中可能出现的斜线“/”。因为电影名除了中文名外可能还收录其他外文名,比如英文、日文等,所以我们需要做出判断,可以把中文名和外文名一起取出来,如果没有外文名,我们will 表示为空。
  写完之后,可以再次开始调试,看看是不是我们需要的结果。同理,是否可以正常获取本页所有电影名。
  通过调试我们可以看到,通过查看程序最后的dataList列表变量,我们得到了第一页所有电影的名字。
  
  既然可以成功获取到电影名,那我就可以用同样的方法获取一个页面上所有电影的其他信息了,比如电影的详细介绍,评分,评分人数,导演等。您可以看到网页上的所有信息以及相应的信息超链接。
  项目源码可通过微信扫描下方二维码关注查看历史文章,也可提前获取关注文章。

vba 网页数据抓取(我学习网抓的过程,以前完全不了解网抓技术)

网站优化优采云 发表了文章 • 0 个评论 • 43 次浏览 • 2022-03-06 11:01 • 来自相关话题

  vba 网页数据抓取(我学习网抓的过程,以前完全不了解网抓技术)
  “来源:|米宏办公室ID:mihoffice” 我的目标:让中国大学生在走出校门的那一刻,就已经掌握了这些办公技能,让职场人士高效利用办公服务。
  支持我,为自己加油!
  怎么说呢,如果能掌握VBA的精髓,学起来也没那么复杂。
  跟大家分享一下学习网页抓取的过程。之前对VBA网页抓取技术一窍不通,今天抽空研究了一下。虽然还有很多不明白的地方,但我大概知道如何进一步学习了。
  之前写过一篇文章文章,是PowerQuery技术抓取的网页数据。你可以阅读它:“网站将多页数据导入Excel,太棒了!
  ”今天我们用VBA代码来抓取以下网页中的数据:很多人看到看不懂的代码就会一头雾水。其实只要仔细分析一下,你就会觉得没那么复杂,只要你知道VBA,本质就是用代码来操作对象。你永远学不会对象,所以遇到不熟悉的对象也不用害怕,套路大同小异!
  一开始在一个网站上看了一篇关于网络爬虫的文章文章:最终代码如下: 然后文章说可以上传到网站@ > 数据被抓到了,搞得我一头雾水。乍一看,文章 并不完整。后来找到了原链接,是老外写的文章,但也是不完整的。 .
  但是上面的文章让我明白了,其实网页抓取使用了两个对象:Microsoft HTML Object Library和Microsoft Internet Controls,就像当时学习字典一样,如果你不想创建对象直接用代码,那么在声明对象变量之前应该先绑定两个对象,这就是所谓的早期引用。
  我从上面代码得到的信息是:首先根据URL获取网页文档,文档收录很多内容,文档是一个对象,可以使用getElementsByTagName()函数提取这个对象的表,提取出来的表也是一个对象,其他的不清楚。
  首先根据URL获取web文档doc,然后使用doc.getElementsByTagName("table")获取doc中的表格。里面不一定只有一个表,所以用索引来指定是哪张表,表收录行,每行收录单元格,循环遍历表中每一行的每个单元格,单元格的innerText属性为单元格中的值,类似于 Excel 中单元格的 Value 属性。
  于是根据猫和虎,我处理了如下代码: 测试完全正确: 然后看到黑图中的代码使用了后期绑定,于是学习了后期绑定的写法,改了代码:测试也很完美。 查看全部

  vba 网页数据抓取(我学习网抓的过程,以前完全不了解网抓技术)
  “来源:|米宏办公室ID:mihoffice” 我的目标:让中国大学生在走出校门的那一刻,就已经掌握了这些办公技能,让职场人士高效利用办公服务。
  支持我,为自己加油!
  怎么说呢,如果能掌握VBA的精髓,学起来也没那么复杂。
  跟大家分享一下学习网页抓取的过程。之前对VBA网页抓取技术一窍不通,今天抽空研究了一下。虽然还有很多不明白的地方,但我大概知道如何进一步学习了。
  之前写过一篇文章文章,是PowerQuery技术抓取的网页数据。你可以阅读它:“网站将多页数据导入Excel,太棒了!
  ”今天我们用VBA代码来抓取以下网页中的数据:很多人看到看不懂的代码就会一头雾水。其实只要仔细分析一下,你就会觉得没那么复杂,只要你知道VBA,本质就是用代码来操作对象。你永远学不会对象,所以遇到不熟悉的对象也不用害怕,套路大同小异!
  一开始在一个网站上看了一篇关于网络爬虫的文章文章:最终代码如下: 然后文章说可以上传到网站@ > 数据被抓到了,搞得我一头雾水。乍一看,文章 并不完整。后来找到了原链接,是老外写的文章,但也是不完整的。 .
  但是上面的文章让我明白了,其实网页抓取使用了两个对象:Microsoft HTML Object Library和Microsoft Internet Controls,就像当时学习字典一样,如果你不想创建对象直接用代码,那么在声明对象变量之前应该先绑定两个对象,这就是所谓的早期引用。
  我从上面代码得到的信息是:首先根据URL获取网页文档,文档收录很多内容,文档是一个对象,可以使用getElementsByTagName()函数提取这个对象的表,提取出来的表也是一个对象,其他的不清楚。
  首先根据URL获取web文档doc,然后使用doc.getElementsByTagName("table")获取doc中的表格。里面不一定只有一个表,所以用索引来指定是哪张表,表收录行,每行收录单元格,循环遍历表中每一行的每个单元格,单元格的innerText属性为单元格中的值,类似于 Excel 中单元格的 Value 属性。
  于是根据猫和虎,我处理了如下代码: 测试完全正确: 然后看到黑图中的代码使用了后期绑定,于是学习了后期绑定的写法,改了代码:测试也很完美。

vba 网页数据抓取(第四节将VBA数组写入工作表时转置(Transpose)的利用)

网站优化优采云 发表了文章 • 0 个评论 • 86 次浏览 • 2022-03-04 20:11 • 来自相关话题

  vba 网页数据抓取(第四节将VBA数组写入工作表时转置(Transpose)的利用)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据的读取、回填和搜索”。
  第四节将VBA数组写入工作表时使用转置(Transpose)
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 用一维数组回填工作表时的转置(Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理! 查看全部

  vba 网页数据抓取(第四节将VBA数组写入工作表时转置(Transpose)的利用)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据的读取、回填和搜索”。
  第四节将VBA数组写入工作表时使用转置(Transpose)
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 用一维数组回填工作表时的转置(Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!

vba 网页数据抓取(这套教程:EXCEL工作表数据的读取、查找的内容)

网站优化优采云 发表了文章 • 0 个评论 • 103 次浏览 • 2022-03-04 20:06 • 来自相关话题

  vba 网页数据抓取(这套教程:EXCEL工作表数据的读取、查找的内容)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据读取、回填和查找”。
  第四节在将 VBA 数组写入工作表时使用转置
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 一维数组回填工作表时的转置 (Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理! 查看全部

  vba 网页数据抓取(这套教程:EXCEL工作表数据的读取、查找的内容)
  大家好,最近推出的内容是“VBA信息获取与处理”的一部分。本套教程面向中高级人员。覆盖范围更广,更实用。现在的内容是第四个主题“EXCEL工作表“数据读取、回填和查找”。
  第四节在将 VBA 数组写入工作表时使用转置
  转置是数组应用中经常用到的一个知识点。在使用Excel表格的过程中,当我们想将水平行变成垂直列(或者将垂直数据切换成水平排列)时,我们希望将前后两个排列不同的数据相互关联时,转置函数可以使用。但需要注意的是,这个函数是一个工作表函数,所以在使用这个函数时必须使用Application.Transpose(Arr)。
  1 一维数组回填工作表时的转置 (Transpose)
  如果需要按列回填一维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZG() '一维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = 数组(“大象”、“老虎”、“狮子”、“狐狸”)
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr) + 1, 1)
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图:
  代码说明:这里需要注意的是,引用单元格区域的扩展语句变为: Resize(UBound(Arr) + 1, 1) 这是列的扩展,所以转置语句对应Application.Transpose (Arr). 这里要注意的一点是resize参数取反了。
  2 用二维数组回填工作表时的转置(Transpose)
  如果需要按列回填二维数组,可以使用如下语句:MyRange.Value = Application.Transpose(Arr)
  具体代码如下:
  Sub MYNZH() '二维数组数据的转置回填方案
  将 Arr 变暗为变体
  将 MyRange 调暗为范围
  工作表(“SHEET4”)。选择
  Arr = Sheets("SHEET2").Range("A1:b9")
  设置 MyRange = Range("A1")
  设置 MyRange = MyRange.Resize(UBound(Arr, 2), UBound(Arr, 1))
  MyRange.ClearContents
  MyRange.Value = Application.Transpose(Arr)
  消息框“好的!”
  结束子
  代码截图如下:
  代码说明:当从工作表中读取数组变量时,VBA会自动调整数组的大小以保持工作表上的范围,所以你不必关心数组的大小。但是,在将数组从 VBA 写入工作表时,必须调整目标区域的大小以适应数组。我们在前面的例子中已经看到了这一点。
  如果传递给工作表的数组小于它写入的范围,则未使用的单元格将出现“#N/A”错误。如果传递的数组大于它写入的范围,则数组将在右侧或底部截断以适应范围。
  回到本节知识点:如何理解换位?如何使用一维数组和二维数组转置?
  本主题的参考程序文件:004 Worksheet.XLSM
  VBA是使用Office实现自己的小型办公自动化的有效手段,这就是我对VBA应用的定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。
  “水无争,万物皆好。” 学习也是如此,知道自己需要什么,不蜷缩在一个认为自己是天堂的世界里,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。
  记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。二十年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程。
  第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;
  第二套:VBA数据库解决方案 数据库是专业的数据处理工具。教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级学习。
  第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。
  第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  第五套:VBA中类的解释与利用这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。
  第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息等功能。如有需要,可以微信:NZ9668
  学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的传递。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序逐渐加深,逐渐学会。
  每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下枯燥而执着的学习过程:
  乌云掠过,暗语无声,
  只有微风,惊动了梦中的莺。
  看星星,疏散北斗七星,
  钦奈将与过去的鹅一起去。
  陌生人,昏暗的灯光,
  忍着长亭。
  多少VBA人,
  在漆黑的夜里,静静地寻找梦想,期待黎明。
  多么不合理!

vba 网页数据抓取(,信息获取与处理中的部分内容,这套数组存储数据 )

网站优化优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2022-03-04 20:04 • 来自相关话题

  vba 网页数据抓取(,信息获取与处理中的部分内容,这套数组存储数据
)
  大家好,最近上线的内容是《VBA信息获取与处理》的一部分。本套教程面向中高级人员,覆盖面更广,实用性更强。现在内容是第四期《Excel工作表数据的读取、回填和查找》。本期我们讲解工作表数据的处理。对于VBA,我给的定位是“自动化处理个人小数据的强大工具” ”。对于大部分朋友来说,VBA的使用是和EXCEL相关联的。很多代码也是用来处理EXCEL或相关的各种数据,而工作表作为与用户交互的对象存在,那么如何查找和读取工作表的数据是一个非常关键的话题。我们将主要讨论这个问题。
  第1节工作表数据与数组的传输比较
  工作表单元格和 VBA 变量之间的数据传输是一种经常应用的操作。此操作比其他操作花费更多时间,因此我们的原则是将此操作保持在最少的次数。在单个操作(而不是单个单元格操作)中将数据传递到数组,或将数组数据传递到工作表,可以大大提高 Excel 应用程序的性能。一般规则是:如果需要对 VBA 中的数据进行大量计算,则应将工作表中的所有值转移到数组中,对数组进行计算,然后将可能被利用的数据回填到工作表中。数组数据。这样的操作将工作表和 VBA 之间的传输次数保持在最低限度。例如,一次将 100 个数组数据传输到工作表比传输 100 次、一次一个数据值要高效得多。我们在VBA中处理数据的时候,一般有三个选项可以选择和使用,一个是将数据存储在数组中,另一个是将数据存储在字典中,第三个不是在内存中处理,而是读取并直接在工作表中处理。
  1
  将工作表数据存储在数组中,在内存中处理数据
  我们先解释一下上面的第一种方案,就是将工作表数据存储在一个数组中,然后在内存中处理数据。为了验证处理的效果,我们在worksheet中给出2000条数据,然后先将数据读入数组,再计算数组中的和。我们来看下面的代码: Sub MYNZ() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1:A2000") MYSUM = 0 For R = 1 To UBound(Arr, 1) MYSUM = MYSUM + Arr(R,​​ 1) Next t2= Timer - t MsgBox "总和为:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  这些代码对于中级以上的朋友来说非常容易理解,只是思路问题。代码不再解释。看看下面的结果:
  
  运行结果:
  
  2
  将工作表数据存储在字典中并在内存中处理数据
  我们来解释一下上面的第二种方案,即将工作表数据存储在字典中,然后在内存中处理数据。为了验证处理的效果,我们在工作表中也给出了相同的 200 0。然后先将数据读入字典,然后求和,我们看下面的代码: Sub MYNZA() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1: A2000") Set myDic = CreateObject("scripting.dictionary") For I = 1 To UBound(Arr) myDic(I)= Arr(I, 1) '初始化字典 MYSUM= MYSUM + myDic(I ) Next I t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  代码运行结果:
  
  3
  直接在工作表中操作数据
  最后我们来解释一下上面的第三种方案,直接在工作表中处理数据。为了验证处理的效果,我们也在worksheet中给出了同样的2000条数据,然后直接在worksheet中对这些数据求和,我们看下面的代码: Sub MYNZB() t = Timer I = 1 Sheets ("SHEET1").Select MYSUM = 0 Do While Cells(I, 1) "" MYSUM = MYSUM + Cells(I, 1) I = I + 1 Loop t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, " 0.00000") & "seconds" 结束子代码截图:
  
  运行代码:
  
  我们看一下数据的运行结果,可以看出运行的效率,但要提醒大家注意:①不要盲目追求效率,注意看懂我的文章文章@ > 《VBA程序运行时间优化》和视觉效果。” ②每个方案都有自己的使用价值,比如字典排序就是一个很有效的方法。回到本节知识点:有哪些解决方案可以实现工作表和 VBA 之间的数据传输?各自是什么?根据自己的经验仔细了解每个选项的优缺点。此主题的参考程序文件:00 4 工作表。XLSM VBA 是使用 Office 的有效手段实现自己的小型办公自动化,这就是我对VBA应用的定义。在新办公软件取代OFFICE之前,谁能把数据处理做到极致,谁才是王道。其中,技能的巅峰莫过于VBA !学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。 “水无争,万物皆好。”学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。
  无论遇到什么,都是一道风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。 20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专用教程。第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具,教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级人员学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段。第四套:VBA代码解决方案视频,是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  Set 5:VBA中类的解释和利用这是一门高级课程,解释了类的空性和物理性的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息功能等。如有需要,可以微信:NZ9668 学习的过程也是修心的过程,培养平和的心态。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的转移。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序是逐渐加深,逐渐学会的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!分享成果,为正能量欢欣鼓舞
  更多相关阅读
   查看全部

  vba 网页数据抓取(,信息获取与处理中的部分内容,这套数组存储数据
)
  大家好,最近上线的内容是《VBA信息获取与处理》的一部分。本套教程面向中高级人员,覆盖面更广,实用性更强。现在内容是第四期《Excel工作表数据的读取、回填和查找》。本期我们讲解工作表数据的处理。对于VBA,我给的定位是“自动化处理个人小数据的强大工具” ”。对于大部分朋友来说,VBA的使用是和EXCEL相关联的。很多代码也是用来处理EXCEL或相关的各种数据,而工作表作为与用户交互的对象存在,那么如何查找和读取工作表的数据是一个非常关键的话题。我们将主要讨论这个问题。
  第1节工作表数据与数组的传输比较
  工作表单元格和 VBA 变量之间的数据传输是一种经常应用的操作。此操作比其他操作花费更多时间,因此我们的原则是将此操作保持在最少的次数。在单个操作(而不是单个单元格操作)中将数据传递到数组,或将数组数据传递到工作表,可以大大提高 Excel 应用程序的性能。一般规则是:如果需要对 VBA 中的数据进行大量计算,则应将工作表中的所有值转移到数组中,对数组进行计算,然后将可能被利用的数据回填到工作表中。数组数据。这样的操作将工作表和 VBA 之间的传输次数保持在最低限度。例如,一次将 100 个数组数据传输到工作表比传输 100 次、一次一个数据值要高效得多。我们在VBA中处理数据的时候,一般有三个选项可以选择和使用,一个是将数据存储在数组中,另一个是将数据存储在字典中,第三个不是在内存中处理,而是读取并直接在工作表中处理。
  1
  将工作表数据存储在数组中,在内存中处理数据
  我们先解释一下上面的第一种方案,就是将工作表数据存储在一个数组中,然后在内存中处理数据。为了验证处理的效果,我们在worksheet中给出2000条数据,然后先将数据读入数组,再计算数组中的和。我们来看下面的代码: Sub MYNZ() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1:A2000") MYSUM = 0 For R = 1 To UBound(Arr, 1) MYSUM = MYSUM + Arr(R,​​ 1) Next t2= Timer - t MsgBox "总和为:" & MYSUM & Chr(13) & "运行时间:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  这些代码对于中级以上的朋友来说非常容易理解,只是思路问题。代码不再解释。看看下面的结果:
  
  运行结果:
  
  2
  将工作表数据存储在字典中并在内存中处理数据
  我们来解释一下上面的第二种方案,即将工作表数据存储在字典中,然后在内存中处理数据。为了验证处理的效果,我们在工作表中也给出了相同的 200 0。然后先将数据读入字典,然后求和,我们看下面的代码: Sub MYNZA() t = Timer Sheets("SHEET1").Select Dim Arr() As Variant Arr = Range("A1: A2000") Set myDic = CreateObject("scripting.dictionary") For I = 1 To UBound(Arr) myDic(I)= Arr(I, 1) '初始化字典 MYSUM= MYSUM + myDic(I ) Next I t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, "0.00000") & "Seconds" 结束子代码截图:
  
  代码运行结果:
  
  3
  直接在工作表中操作数据
  最后我们来解释一下上面的第三种方案,直接在工作表中处理数据。为了验证处理的效果,我们也在worksheet中给出了同样的2000条数据,然后直接在worksheet中对这些数据求和,我们看下面的代码: Sub MYNZB() t = Timer I = 1 Sheets ("SHEET1").Select MYSUM = 0 Do While Cells(I, 1) "" MYSUM = MYSUM + Cells(I, 1) I = I + 1 Loop t2 = Timer - t MsgBox "Sum is:" & MYSUM & Chr(13) & "Runtime:" & Format(t2, " 0.00000") & "seconds" 结束子代码截图:
  
  运行代码:
  
  我们看一下数据的运行结果,可以看出运行的效率,但要提醒大家注意:①不要盲目追求效率,注意看懂我的文章文章@ > 《VBA程序运行时间优化》和视觉效果。” ②每个方案都有自己的使用价值,比如字典排序就是一个很有效的方法。回到本节知识点:有哪些解决方案可以实现工作表和 VBA 之间的数据传输?各自是什么?根据自己的经验仔细了解每个选项的优缺点。此主题的参考程序文件:00 4 工作表。XLSM VBA 是使用 Office 的有效手段实现自己的小型办公自动化,这就是我对VBA应用的定义。在新办公软件取代OFFICE之前,谁能把数据处理做到极致,谁才是王道。其中,技能的巅峰莫过于VBA !学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云去闲。相见不厌,唯有敬亭山。 “水无争,万物皆好。”学习也是如此,知道自己需要什么,不蜷缩在世界的一小块认为自己是天堂的地方,以及自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。
  无论遇到什么,都是一道风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。 20年过去了,为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专用教程。第一套:VBA代码解决方案是对VBA中各种知识点的讲解,涵盖了大部分VBA知识点,初学者必备;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具,教程中详细介绍了使用ADO连接ACCDB和EXCEL的方法和示例操作,适合中级人员学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段。第四套:VBA代码解决方案视频,是给初学者的视频讲解,可以快速上手,更快掌握这个技能。
  Set 5:VBA中类的解释和利用这是一门高级课程,解释了类的空性和物理性的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA上网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等应用交互、FSO的使用对象,获取工作表和文件夹信息,获取图形信息,自定义工作表信息功能等。如有需要,可以微信:NZ9668 学习的过程也是修心的过程,培养平和的心态。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面的教程是我经验的转移。可以使用上面的信息 1,3,2,6,5 或者 4,3,2,6 ,5的顺序是逐渐加深,逐渐学会的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!分享成果,为正能量欢欣鼓舞
  更多相关阅读
  

vba 网页数据抓取(一下专题“利用IE抓取网络数据”的第三节(图))

网站优化优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2022-02-24 15:02 • 来自相关话题

  vba 网页数据抓取(一下专题“利用IE抓取网络数据”的第三节(图))
  大家好,今天我们来讲解一下《VBA信息获取与处理》教程第九题《使用IE采集网络数据》的第三节,《使用IE采集非禁股数据》,这个话题是非常有用的知识点,希望你能掌握。第四节利用IE获取非禁股数据。大家好,本次讲座是关于使用IE抓取东方财富的非禁股数据。使用方法与上一讲基本类似。目的仍然是向您展示 VBA。在这个例子中,我们将介绍一个实际场景供您选择和使用。实战场景:非禁股的概念我不是很清楚,但是很多玩股票的朋友都关注过。他们经常每天查看解禁股票的股票数据,以等待某种信息,并要求使用IE提取某个解禁股票的网站股票信息,并将这些数据放入工作表中替代观看。选择的网站是:即东方财富网的数据。1.使用IE抓取股票信息的思路分析为了实现上述场景,我们来看看上面提供的URL提供的网页信息:
  
  在上面的网页中,我要提取的是红框框起来的表格的数据。我们来分析一下思路:首先,我们需要创建一个IE对象,然后提取网页文档,提取网页文档上第三个表的数据,即Can。抽取表格数据时,可以模拟真实工作表的行列循环,依次抽取数据。在我之前的解释中,我提到 Rows.Length 是指网页的数量,而 Cells(j).innertext 是指单元格的内容。写代码的时候要注意这两点。另外,在爬取web文档的表格时,我们使用了all.tags("table")(3)的方法,在前面的解释中很模糊但是很有用。all.tags("tag name "): 返回此类标签的元素集。这里选择序号(3)指的是序号为3的表的数据。对于innertext的概念,需要注意理解,innerText指的是标签之间的明文信息。数据被提取,内存被释放,这就是我提出的方案。 2、利用IE实现股票信息抓取和解锁的代码为了实现上面的思路,我给出了如下代码: Sub myNZB() '使用 IE 抓取和解锁股票数据 DimIE, dmt, tb, i&amp;, j&amp; SetIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象 Sheets("SHEET3" ).Select Cells.ClearComments WithIE .Visible= True ' Show it.navigate"" '加载页面 DoUntil .readystate = 4 '
  2).Visible = True 'Show it.navigate"" '加载页面 DoUntil .readystate = 4 '等待页面完成加载 DoEvents Loop 上面的代码使浏览器可见并加载URL,直到加载完成完成,这里的DoEvents是为了避免软崩溃的现象。3) Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量4) Set tb = dmt.all.tags("table")(3) '通过index No. 捕获表对象5)For i = 0 To tb.Rows.Length - 1 '迭代其每一行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '迭代每一行每个单元格的行 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格 Next Next 将表格的数据提取到工作表中。6) Set IE = Nothing Setdmt = Nothing Set tb = Nothing 回收内存。对于回收内存的操作,建议大家使用。在数据库、字典、搜索等案例中也有类似的操作。代码截图:
  
  通过上面的代码,我们就可以完成我们的想法了。3 使用IE实现捕获和解锁股票信息的效果 当我们点击运行按钮,如图中箭头所示,程序开始运行,网页数据被捕获到工作表中。当然,在实际应用中,用户可以根据自己的实际需要,将爬取工作完成到指定位置。
  
  这验证了我们思考的正确性。回到本节知识点:如何提取页面文档中指定表的数据?本节参考:009 worksheet.xlsm
  
  积木编程思想:在我的系列丛书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,很有必要采用这个方案。其主要内涵: 1、不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。2 建立自己的“积木库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA应用定义 VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程: 第一套:VBA代码解法是对VBA中各个知识点的讲解。,教程共有147讲,涵盖了大部分初学者必备的VBA知识点;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具。教程详细介绍了使用ADO连接ACCDB和EXCEL操作的方法和例子,适合中级学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。第五组:VBA中类的解释与利用 这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA网络数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等→2→6→5或4→3→2→6→5。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云孤单。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面提到的教程是我许多经验的传递。“水无争,万物皆好。” 学习也是如此,知道自己需要什么,不要挤在世界的一小块地方,认为你是天堂,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。分享成果,收获正能量 查看全部

  vba 网页数据抓取(一下专题“利用IE抓取网络数据”的第三节(图))
  大家好,今天我们来讲解一下《VBA信息获取与处理》教程第九题《使用IE采集网络数据》的第三节,《使用IE采集非禁股数据》,这个话题是非常有用的知识点,希望你能掌握。第四节利用IE获取非禁股数据。大家好,本次讲座是关于使用IE抓取东方财富的非禁股数据。使用方法与上一讲基本类似。目的仍然是向您展示 VBA。在这个例子中,我们将介绍一个实际场景供您选择和使用。实战场景:非禁股的概念我不是很清楚,但是很多玩股票的朋友都关注过。他们经常每天查看解禁股票的股票数据,以等待某种信息,并要求使用IE提取某个解禁股票的网站股票信息,并将这些数据放入工作表中替代观看。选择的网站是:即东方财富网的数据。1.使用IE抓取股票信息的思路分析为了实现上述场景,我们来看看上面提供的URL提供的网页信息:
  
  在上面的网页中,我要提取的是红框框起来的表格的数据。我们来分析一下思路:首先,我们需要创建一个IE对象,然后提取网页文档,提取网页文档上第三个表的数据,即Can。抽取表格数据时,可以模拟真实工作表的行列循环,依次抽取数据。在我之前的解释中,我提到 Rows.Length 是指网页的数量,而 Cells(j).innertext 是指单元格的内容。写代码的时候要注意这两点。另外,在爬取web文档的表格时,我们使用了all.tags("table")(3)的方法,在前面的解释中很模糊但是很有用。all.tags("tag name "): 返回此类标签的元素集。这里选择序号(3)指的是序号为3的表的数据。对于innertext的概念,需要注意理解,innerText指的是标签之间的明文信息。数据被提取,内存被释放,这就是我提出的方案。 2、利用IE实现股票信息抓取和解锁的代码为了实现上面的思路,我给出了如下代码: Sub myNZB() '使用 IE 抓取和解锁股票数据 DimIE, dmt, tb, i&amp;, j&amp; SetIE = CreateObject("InternetExplorer.Application") '创建一个 IE 对象 Sheets("SHEET3" ).Select Cells.ClearComments WithIE .Visible= True ' Show it.navigate"" '加载页面 DoUntil .readystate = 4 '
  2).Visible = True 'Show it.navigate"" '加载页面 DoUntil .readystate = 4 '等待页面完成加载 DoEvents Loop 上面的代码使浏览器可见并加载URL,直到加载完成完成,这里的DoEvents是为了避免软崩溃的现象。3) Set dmt = .document '将IE浏览器加载的页面文档赋值给dmt变量4) Set tb = dmt.all.tags("table")(3) '通过index No. 捕获表对象5)For i = 0 To tb.Rows.Length - 1 '迭代其每一行 Forj = 0 To tb.Rows(i).Cells.Length - 1 '迭代每一行每个单元格的行 Cells(i+ 1, j + 1) = tb.Rows(i).Cells(j).innertext '将其内部文本写入单元格 Next Next 将表格的数据提取到工作表中。6) Set IE = Nothing Setdmt = Nothing Set tb = Nothing 回收内存。对于回收内存的操作,建议大家使用。在数据库、字典、搜索等案例中也有类似的操作。代码截图:
  
  通过上面的代码,我们就可以完成我们的想法了。3 使用IE实现捕获和解锁股票信息的效果 当我们点击运行按钮,如图中箭头所示,程序开始运行,网页数据被捕获到工作表中。当然,在实际应用中,用户可以根据自己的实际需要,将爬取工作完成到指定位置。
  
  这验证了我们思考的正确性。回到本节知识点:如何提取页面文档中指定表的数据?本节参考:009 worksheet.xlsm
  
  积木编程思想:在我的系列丛书中,我一直在强调“积木”的编程思想,这也是学习使用VBA的主要方法,尤其是对于专业人士来说,很有必要采用这个方案。其主要内涵: 1、不要自己输入所有代码。你要做的就是把块放在正确的地方,然后修复代码,一定要复制它,从你的构建块库中复制它,然后修复代码并利用时间来有效地思考。2 建立自己的“积木库”。平时在学习的过程中,把自己觉得有用的代码放在一起,多积累,随时用。您在构建块库中拥有的信息越多,您的编程思想就会越广泛。
  
  VBA应用定义 VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对 VBA 的应用程序定义。在取代OFFICE的新办公软件出现之前,谁能在数据处理上做到极致,谁就是王者。技巧的巅峰莫过于VBA!记得20年前第一次学VBA的时候,当时资料很少,只能看源码搞清楚,真的很难。20年过去了。为了不让学VBA的朋友重复我之前的经历,我结合自己多年的VBA实践经验,推出了六篇VBA专题教程: 第一套:VBA代码解法是对VBA中各个知识点的讲解。,教程共有147讲,涵盖了大部分初学者必备的VBA知识点;第二套:VBA数据库解决方案 数据库是一种专业的数据处理工具。教程详细介绍了使用ADO连接ACCDB和EXCEL操作的方法和例子,适合中级学习。第三套:VBA数组和字典解决方案数组和字典是VBA的精髓,字典是提高VBA代码水平的有效手段,值得深入研究,是初级和中级人员学习的一种手段改进代码。第四套:VBA代码解法视频是给初学者的视频讲解,可以快速上手,更快掌握这个技能。这套教程是第一套教程的视频讲解,听元音比较容易。第五组:VBA中类的解释与利用 这是一门进阶课程,讲解类的虚无和肉身的程度。虽然类的使用较少,但认真学习可以促进自身VBA理论的提高。对这套课程的领悟,主要是读者的领悟,对一种佛教哲学的领悟。第六套教程:《VBA信息获取与处理》,这是一个高级教程,涵盖范围更广,实用性更强,面向中高级人员。教程共有20个主题,包括:跨应用信息获取、随机信息的使用、邮件发送、VBA网络数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息等→2→6→5或4→3→2→6→5。教程提供讲解并提供大量积木,如有需要可以微信:NZ9668
  
  学习VBA是一个过程,也需要体验一种枯燥的感觉,比如太白的诗:百鸟高飞,孤云孤单。相见不厌,唯有敬亭山。学习的过程也是修心的过程,修心平和。在码字的世界里,心静,心情好,身体自然就好。当心平静时,它是正义的。心中没有那么多的邪见邪见,也没有那么多的妄想。利益他人就是利益自己。这些教程也是为了帮助你起航,帮助我。我上面提到的教程是我许多经验的传递。“水无争,万物皆好。” 学习也是如此,知道自己需要什么,不要挤在世界的一小块地方,认为你是天堂,说自欺欺人的言论直到年老。努力提高自己,以充满活力的精神把握现在,这就是进步。越有意义的事情,就越难。意愿决定一切,智慧决定成败。无论遇到什么,都是风景。看不起纠纷,看不起得失。不管是满的还是小的,都不愁茶;不管是浓还是淡,都有自己值得品尝的味道。感受真实的时间,静下心来,多了解,积福报。与其天天闹着玩,不如天天过日子。在杀鸡更严重的后疫情世界,储备知识,尤其是新知识,为自己生存。学习时是渺小而无声的,使用时是巨大而汹涌的。每一次收获都是成长的记录。怎么可能没有证据?正是这种执着,让晨曦绽放出灿烂的光芒。最后,给致力于VBA学习的朋友一句话,让大家感受一下学习过程的平淡和执着:乌云掠过,暗语无声,唯有微风,惊动了林中的莺梦。仰望星空,疏散北斗七星,奈将与雁同行过去。黔外人,灯火昏暗,忍着长亭。有多少VBA人,在漆黑的夜里,默默的追寻梦想,却期待着黎明。多么不合理!回到学习和使用VBA的经历,很感慨。我想用这些话与大家分享我多年实际工作经验的成果。我想把这些有用的东西分享给真正需要使用 VBA 的旅友。分享成果,收获正能量

vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))

网站优化优采云 发表了文章 • 0 个评论 • 149 次浏览 • 2022-02-23 19:13 • 来自相关话题

  vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))
  1、简介
  在 Python 网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类 gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第一部分,尝试使用xslt方法提取静态网页内容并一次性转换为xml格式。
  2、使用lxml库提取网页内容
  lxml是python的一个库,可以快速灵活地处理XML。它支持 XML 路径语言 (XPath) 和可扩展样式表语言转换 (XSLT),并实现通用的 ElementTree API。
  这2天,我在python中测试了通过xslt提取网页内容,记录如下:
  2.1、抓住目标
  假设要提取jisoke官网老论坛的帖子标题和回复数,如下图,需要提取整个列表并保存为xml格式
  
  2.2、源码1:只抓取当前页面,结果显示在控制台
  Python的优势在于它可以用少量的代码解决一个问题。请注意,以下代码看起来很长。其实python函数调用的并不多,一个xslt脚本占用了大量的空间。在这段代码中,只有它只是一个长字符串。至于为什么选择 xslt 而不是离散的 xpath 或者令人头疼的正则表达式,请参考《Python Instant Web Crawler Project Startup Instructions》,我们希望通过这种架构,程序员的时间节省一半以上。
  可以复制并运行以下代码(windows10下测试,python3.2):
  
from urllib import request
from lxml import etree
url="http://www.gooseeker.com/cn/forum/7"
conn = request.urlopen(url)

doc = etree.HTML(conn.read())

xslt_root = etree.XML("""\

































""")

transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(result_tree)
  源码可以从文末的 GitHub 源码下载。
  2.3、获取结果
  得到的爬取结果如下:
  
  2.4、源码2:翻转取,并将结果保存到文件
  我们对2.2的代码进行了进一步的修改,增加了翻页功能来获取和保存结果文件。代码如下:
  
from urllib import request
from lxml import etree
import time

xslt_root = etree.XML("""\

































""")

baseurl = "http://www.gooseeker.com/cn/forum/7"
basefilebegin = "jsk_bbs_"
basefileend = ".xml"
count = 1
while (count < 12):
url = baseurl + "?page=" + str(count)
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(str(result_tree))
file_obj = open(basefilebegin+str(count)+basefileend,&#39;w&#39;,encoding=&#39;UTF-8&#39;)
file_obj.write(str(result_tree))
file_obj.close()
count += 1
time.sleep(2)
  我们添加了编写文件的代码,还添加了一个循环来构造每次翻页的URL,但是如果在翻页过程中URL始终相同怎么办?实际上,这是动态的网页内容,下面将进行讨论。
  3、总结
  这是开源Python通用爬虫项目的验证过程。在爬虫框架中,其他部分很容易通用化,也就是很难将网页内容提取并转化为结构化操作,我们称之为提取器。但是在GooSeeker的可视化抽取规则生成器MS的帮助下,抽取器的生成过程会变得非常方便,并且插入可以标准化,从而实现一个万能爬虫。后续文章会专门讲解MS。平台配合Python的具体方法。
  4、继续阅读
  本文介绍的方法通常用于爬取静态网页内容,也就是所谓的html文档的内容。目前很多网站内容都是通过javascript动态生成的。一开始html是没有这个内容的,通过后会加载。如果添加了方法,那么需要用到动态技术,请阅读《Python爬虫使用Selenium+PhantomJS爬取Ajax和动态HTML内容》
  5、Jisooke GooSeeker开源代码下载源码
  1.GooSeeker开源Python网络爬虫GitHub源码
  6、文档修改历史
  2016-05-26:V2.0,增加文字说明;添加了线程的代码
  2016-05-29:V2.1、添加最后一章源码下载源码
  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU源码库。
  注:相关教程知识请移步python教程频道。 查看全部

  vba 网页数据抓取(Python网络爬虫内容提取器一文项目启动说明(一))
  1、简介
  在 Python 网络爬虫内容提取器一文中,我们详细讲解了核心组件:可插拔内容提取器类 gsExtractor。本文记录了在确定gsExtractor技术路线过程中所做的编程实验。这是第一部分,尝试使用xslt方法提取静态网页内容并一次性转换为xml格式。
  2、使用lxml库提取网页内容
  lxml是python的一个库,可以快速灵活地处理XML。它支持 XML 路径语言 (XPath) 和可扩展样式表语言转换 (XSLT),并实现通用的 ElementTree API。
  这2天,我在python中测试了通过xslt提取网页内容,记录如下:
  2.1、抓住目标
  假设要提取jisoke官网老论坛的帖子标题和回复数,如下图,需要提取整个列表并保存为xml格式
  
  2.2、源码1:只抓取当前页面,结果显示在控制台
  Python的优势在于它可以用少量的代码解决一个问题。请注意,以下代码看起来很长。其实python函数调用的并不多,一个xslt脚本占用了大量的空间。在这段代码中,只有它只是一个长字符串。至于为什么选择 xslt 而不是离散的 xpath 或者令人头疼的正则表达式,请参考《Python Instant Web Crawler Project Startup Instructions》,我们希望通过这种架构,程序员的时间节省一半以上。
  可以复制并运行以下代码(windows10下测试,python3.2):
  
from urllib import request
from lxml import etree
url="http://www.gooseeker.com/cn/forum/7"
conn = request.urlopen(url)

doc = etree.HTML(conn.read())

xslt_root = etree.XML("""\

































""")

transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(result_tree)
  源码可以从文末的 GitHub 源码下载。
  2.3、获取结果
  得到的爬取结果如下:
  
  2.4、源码2:翻转取,并将结果保存到文件
  我们对2.2的代码进行了进一步的修改,增加了翻页功能来获取和保存结果文件。代码如下:
  
from urllib import request
from lxml import etree
import time

xslt_root = etree.XML("""\

































""")

baseurl = "http://www.gooseeker.com/cn/forum/7"
basefilebegin = "jsk_bbs_"
basefileend = ".xml"
count = 1
while (count < 12):
url = baseurl + "?page=" + str(count)
conn = request.urlopen(url)
doc = etree.HTML(conn.read())
transform = etree.XSLT(xslt_root)
result_tree = transform(doc)
print(str(result_tree))
file_obj = open(basefilebegin+str(count)+basefileend,&#39;w&#39;,encoding=&#39;UTF-8&#39;)
file_obj.write(str(result_tree))
file_obj.close()
count += 1
time.sleep(2)
  我们添加了编写文件的代码,还添加了一个循环来构造每次翻页的URL,但是如果在翻页过程中URL始终相同怎么办?实际上,这是动态的网页内容,下面将进行讨论。
  3、总结
  这是开源Python通用爬虫项目的验证过程。在爬虫框架中,其他部分很容易通用化,也就是很难将网页内容提取并转化为结构化操作,我们称之为提取器。但是在GooSeeker的可视化抽取规则生成器MS的帮助下,抽取器的生成过程会变得非常方便,并且插入可以标准化,从而实现一个万能爬虫。后续文章会专门讲解MS。平台配合Python的具体方法。
  4、继续阅读
  本文介绍的方法通常用于爬取静态网页内容,也就是所谓的html文档的内容。目前很多网站内容都是通过javascript动态生成的。一开始html是没有这个内容的,通过后会加载。如果添加了方法,那么需要用到动态技术,请阅读《Python爬虫使用Selenium+PhantomJS爬取Ajax和动态HTML内容》
  5、Jisooke GooSeeker开源代码下载源码
  1.GooSeeker开源Python网络爬虫GitHub源码
  6、文档修改历史
  2016-05-26:V2.0,增加文字说明;添加了线程的代码
  2016-05-29:V2.1、添加最后一章源码下载源码
  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持ASPKU源码库。
  注:相关教程知识请移步python教程频道。

vba 网页数据抓取(我正在寻找一种从Word文件中提取/抓取数据到数据库的方法)

网站优化优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2022-02-15 08:15 • 来自相关话题

  vba 网页数据抓取(我正在寻找一种从Word文件中提取/抓取数据到数据库的方法)
  我正在寻找一种从 Word 文件中提取/抓取数据到数据库的方法。我们将客户会议记录记录在 MS Word 文件中的公司程序很大程度上是由于历史和惯性造成的。我希望能够将这些分钟中的操作项提取到数据库中,以便我们可以从 Web 界面访问它们,将它们转换为任务并在完成后更新它们。这是最好的方法:从 Word 中的 VBA 宏创建 CSV 并上传到数据库?Word中的VBA宏通过win32com的Python脚本与VBA连接(如何从VBA连接到MySQL?)然后上传到数据库?最后一个对我很有吸引力,因为 Web 界面是用 Django 构建的,但我从未使用过 win32com 或尝试从 python 脚本编写 Word。编辑:我已经开始使用 VBA 来提取文本,因为它使使用 Word 对象模型更容易一些。一世' 我遇到了一个问题 - 所有文本都在表格中,当我从我想要的 CELLS 中拉出字符串时,我在每个字符串的末尾得到一个奇怪的小方形字符。我的代码如下所示:
  sFile = "D:\temp\output.txt"
fnum = FreeFile
Open sFile For Output As #fnum
num_rows = Application.ActiveDocument.Tables(2).Rows.Count
For n = 1 To num_rows
Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text
Assign = Application.ActiveDocument.Tables(2).Cell(n, 3).Range.Text
Target = Application.ActiveDocument.Tables(2).Cell(n, 4).Range.Text
If Target = "" Then
ExportText = ""
Else
ExportText = Descr & Chr(44) & Assign & Chr(44) & _
Target & Chr(13) & Chr(10)
Print #fnum, ExportText
End If
Next n
Close #fnum
  小控制字符框是干什么用的?什么类型的字符代码来自 Word? 查看全部

  vba 网页数据抓取(我正在寻找一种从Word文件中提取/抓取数据到数据库的方法)
  我正在寻找一种从 Word 文件中提取/抓取数据到数据库的方法。我们将客户会议记录记录在 MS Word 文件中的公司程序很大程度上是由于历史和惯性造成的。我希望能够将这些分钟中的操作项提取到数据库中,以便我们可以从 Web 界面访问它们,将它们转换为任务并在完成后更新它们。这是最好的方法:从 Word 中的 VBA 宏创建 CSV 并上传到数据库?Word中的VBA宏通过win32com的Python脚本与VBA连接(如何从VBA连接到MySQL?)然后上传到数据库?最后一个对我很有吸引力,因为 Web 界面是用 Django 构建的,但我从未使用过 win32com 或尝试从 python 脚本编写 Word。编辑:我已经开始使用 VBA 来提取文本,因为它使使用 Word 对象模型更容易一些。一世' 我遇到了一个问题 - 所有文本都在表格中,当我从我想要的 CELLS 中拉出字符串时,我在每个字符串的末尾得到一个奇怪的小方形字符。我的代码如下所示:
  sFile = "D:\temp\output.txt"
fnum = FreeFile
Open sFile For Output As #fnum
num_rows = Application.ActiveDocument.Tables(2).Rows.Count
For n = 1 To num_rows
Descr = Application.ActiveDocument.Tables(2).Cell(n, 2).Range.Text
Assign = Application.ActiveDocument.Tables(2).Cell(n, 3).Range.Text
Target = Application.ActiveDocument.Tables(2).Cell(n, 4).Range.Text
If Target = "" Then
ExportText = ""
Else
ExportText = Descr & Chr(44) & Assign & Chr(44) & _
Target & Chr(13) & Chr(10)
Print #fnum, ExportText
End If
Next n
Close #fnum
  小控制字符框是干什么用的?什么类型的字符代码来自 Word?

官方客服QQ群

微信人工客服

QQ人工客服


线