抓取网页新闻(大数据时代已然到来,抓取网页数据成为科研重要手段)
优采云 发布时间: 2021-12-09 09:08抓取网页新闻(大数据时代已然到来,抓取网页数据成为科研重要手段)
网页数据爬取是指从互联网上获取数据,并将获取的非结构化数据转化为结构化数据,最终可以将数据存储在本地计算机或数据库中的一种技术。
目前,全球网络数据以每年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的标签,返回值是一个集合。
这些更方便用于在抓取所有页面内容后帮助过滤有效信息。