抓取网页新闻(大数据时代已然到来,抓取网页数据成为科研重要手段)
优采云 发布时间: 2022-01-23 00:05抓取网页新闻(大数据时代已然到来,抓取网页数据成为科研重要手段)
抓取网页数据是指从互联网上获取数据,将获取的非结构化数据转换为结构化数据,最后将数据存储在本地计算机或数据库中的一种技术。
目前,全球网络数据的增长率约为每年 40%。根据IDC(互联网数据中心)的报告,2013年全球数据4.4ZB,2020年全球数据总量将达到40ZB。大数据时代已经到来,网络数据爬取已经成为进行竞争对手分析、业务数据挖掘和科学研究的重要手段。
我们在做数据分析的时候会发现,大部分的参考数据都是从网上获取的。然而,互联网上的原创数据往往不尽如人意,难以满足我们的个性化需求。因此,我们需要根据实际情况,有针对性地抓取网页数据。
网页操作
引用 Micorsoft Internet Controls 之后,我们可以对页面做任何我们想做的事情,但我们必须在主页上拥有一个页面,上帝说我们应该有一个页面!
1、打开网页
我们以百度搜索“chahu”关键词为例:
使用 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的标签,返回值是一个集合。
这些都是在爬取整个页面内容后方便用来帮助过滤有效信息的。