浏览器抓取网页(大数据时代已然到来,抓取网页数据成为开展竞争对手分析、商业数据挖掘和科研的重要手段)
优采云 发布时间: 2021-10-28 17:25浏览器抓取网页(大数据时代已然到来,抓取网页数据成为开展竞争对手分析、商业数据挖掘和科研的重要手段)
网页数据爬取是指从互联网上获取数据,并将获取的非结构化数据转化为结构化数据,最后将数据存储在本地计算机或数据库中的一种技术。
目前,全球网络数据以每年40%左右的速度增长。IDC(互联网数据中心)报告显示,2013年全球数据4.4ZB。到2020年,全球数据总量将达到40ZB。大数据时代已经到来,网络数据采集已成为进行竞争对手分析、业务数据挖掘、科学研究的重要手段。
我们在做数据分析的时候,会发现大部分的参考数据都是从网上获取的。互联网上的原创数据往往不尽如人意,难以满足我们的个性化需求。因此,我们需要根据实际情况有针对性地抓取网页数据。
网页操作
引用 Micorsoft Internet Controls 后,我们可以对页面做任何我们想做的事情,但是我们需要在主页上有一个页面,上帝说我们需要一个页面!
1、打开网页
我们以在百度上搜索“查虎”关键词为例:
使用 CreateObject("internetexplorer.application")
.可见 = 真
.导航“怎么了”
'关闭页面
'。退出
代码很简单,先创建一个IE对象,然后给一些属性赋值。Visible就是可见性,是指网页被操作时是否会看到网页。熟练后可以设置为False,这样不仅让程序在运行时有一种神秘感(而不是),而且速度也快了一点。
但是有一点要记住,这个网页在我们打开后并没有关闭,这意味着程序结束后需要手动关闭它。如果网页不可见,则无法手动关闭。代码中的注释部分用于关闭网页。不用说,导航就是 URL。
我们必须等到网页完全加载后才能开始抓取网页数据。这次我们使用:(从这里开始,所有的代码都需要写在With代码块中)
而 .ReadyState 4 或 .Busy
事件
温德
Busy 是网页的繁忙状态,ReadyState 是 HTTP 的五种就绪状态,对应如下:
: 请求未初始化(open() 尚未被调用)。
1:请求已经建立,但是还没有发送(send()没有被调用)。
2:请求已经发送并正在处理中(通常现在可以从响应中获取内容头)。
3:请求正在处理中;通常响应中有部分数据可用,但服务器还没有完成响应的生成。
4:响应完成;您可以获取并使用服务器的响应。
2、获取信息
我们先爬取网页数据,然后过滤掉有用的部分,然后慢慢添加条件爬取。
设置 dmt = .Document
对于 i = 0 到 dmt.all.Length-1
设置 htMent = dmt.all(i)
使用 ActiveSheet
.Cells(i + 2, "A") = htMent.tagName
.Cells(i + 2, "B") = TypeName(htMent)
.Cells(i + 2, "C") = htMent.ID
.Cells(i + 2, "D") = htMent.Name
.Cells(i + 2, "E") = htMent.Value
.Cells(i + 2, "F") = htMent.Text
.Cells(i + 2, "G") = htMent.innerText
接下来我
这段代码有点类似于JS,需要从IE.Document.all中找出页面上的所有节点。还有其他几种方法:
getElementById("IDName"):返回第一个带有IDName的标签 getElementsByName("a"):返回所有标签,返回值为集合 getElementsByClassName("css"):返回所有样式名称为css的标签,返回该值是一个集合。
这些更方便用于在抓取所有页面内容后帮助过滤有效信息。