excel vba抓取网页数据(使用ExcelVBA的方式获取搜索引擎官方、第三方网站的数据问题)

优采云 发布时间: 2021-10-03 06:40

  excel vba抓取网页数据(使用ExcelVBA的方式获取搜索引擎官方、第三方网站的数据问题)

  一个SEO项目在执行过程中,通常需要查看数据报表来反映项目的表现,比如网站收录、域名PR、预估流量、Alexa排名等。本文将介绍使用VBA从网上抓取网站的基础数据的方法。通过建立自动化的数据上报系统,提高了SEO数据采集的效率。使用ExcelVBA从搜索引擎网站获取官方和第三方数据需要解决以下基本技术问题(更复杂的情况后面会讲,比如需要登录查询的情况等) .):1.如何在网页代码中查找目标数据(通过查看源代码,准确定位目标数据的位置)2. 使用VBA代码获取数据(使用Microsoft.XMLHTTP等对象)3.字符串处理获取目标数据(使用replace、split等函数进行处理) 这次我将演示如何使用VBA来编写自定义函数从百度获取收录数据。其他基本的数据采集原理基本相同,暂不赘述。以新东方()为例,按照刚才提到的技术链接一一讲解。1.找到目标数据 其他基本的数据采集原理基本相同,暂不赘述。以新东方()为例,按照刚才提到的技术链接一一讲解。1.找到目标数据 其他基本的数据采集原理基本相同,暂不赘述。以新东方()为例,按照刚才提到的技术链接一一讲解。1.找到目标数据

  

  使用百度中的site:命令返回查询结果。如上图所示,可以看到收录的数量为4,890,000。使用 Firefox 中的 Firebug 插件查看源代码。结果显示在蓝色块中,如下图所示。我们要采集的数据在网页的 HTML 代码中。

  

  2.使用Microsoft.XMLHTTP对象获取网页数据,并使用split函数进行文本处理

  

  上图为功能代码(源码见下),通过该方法可以快速查询目标网页的收录数据。首先定义URL参数作为函数的输入值,字符类型为String(字符串)类型;然后定义 htmlBody 变量来存储 网站 HTML 代码。接下来更重要的一步是定义和声明htmlObject对象,并使用With方法配置查询地址和原创数据的初步清理。Replace函数的作用是删除网页源代码中的回车换行(vbCrLf),方便下一步Split函数的处理。得到简单处理的网页数据后,得到网页HTML代码。此代码存储在 htmlBody 变量中,而我们要获取的收录数据就存储在其中。第一步,我们查看了网站的源代码,网站的收录的数量收录在句子中:“4,890,000个相关结果被发现。”,使用拆分功能。两次文本截取可以提取最终的收录数量。Split功能的使用请自行百度。至此,我们就完成了一个简单的收录查询功能。在Excel中使用时,只需在任意单元格中输入“=baiduInde​​x("")”,回车后收录数据将自动返回到表格中。收录在句子中:“找到了 4,890,000 个相关结果。”,使用 split 函数。两次文本截取可以提取最终的收录数量。Split功能的使用请自行百度。至此,我们就完成了一个简单的收录查询功能。在Excel中使用时,只需在任意单元格中输入“=baiduInde​​x("")”,回车后收录数据将自动返回到表格中。收录在句子中:“找到了 4,890,000 个相关结果。”,使用 split 函数。两次文本截取可以提取最终的收录数量。Split功能的使用请自行百度。至此,我们就完成了一个简单的收录查询功能。在Excel中使用时,只需在任意单元格中输入“=baiduInde​​x("")”,回车后收录数据将自动返回到表格中。

  

  至此,编写简单查询函数的过程基本结束。这种方式虽然省去了手动频繁查询数据的麻烦,但是使用函数获取数据的方法还是存在很多不便:1.函数维护成本比较高。百度或第三方网站的前端代码更新后,查询语句也需要做相应的修改。在使用中,偶尔会遇到需要更新拆分功能的情况。2. 批量自动化是不可能的。在做SEO项目时,我们需要查询各种数据,包括收录、PR、排名、BR等数据做周报或月报。通常收录收录很多不同的列,竞争对手的URL等。使用函数的方法在批量查询中仍然效率不高。当然还有一个解决方案,可以结合Excel表格控件,结合VBA代码,通过一键操作,完成项目周报数据的查询。要实现这样的功能需要更复杂的 VBA 代码。未来文章,我们会继续讨论。由于时间关系,一些技术细节没有过多解释。希望大家踊跃回复讨论。如果有对SEO数据分析感兴趣的朋友,欢迎讨论。======源代码======FunctionBaiduInde​​x(urlAsString)'定义函数名DimhtmlBody'定义字符串变量,用于存放网页源代码DimhtmlObjectAsObject'定义对象变量SethtmlObject=CreateObject("microsoft.xmlhttp") WithhtmlObject.Open"GET",":"&url,False'

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线