抓取网页新闻(大数据时代已然到来,抓取网页数据成为科研重要手段)

优采云 发布时间: 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的标签,返回值是一个集合。

  这些更方便用于在抓取所有页面内容后帮助过滤有效信息。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线