浏览器抓取网页(大数据时代已然到来,抓取网页数据成为开展竞争对手分析、商业数据挖掘和科研的重要手段)

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

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线