js 爬虫抓取网页数据(上海证券报的官方网站.js演示/js演示仅供学习)

优采云 发布时间: 2021-11-02 10:06

  js 爬虫抓取网页数据(上海证券报的官方网站.js演示/js演示仅供学习)

  爬虫世界就像武林,派系众多。其中Python简单易学,深受各位朋友的喜爱。现在在做大数据(呵呵),不写几个爬虫都不好意思。连数据分析R语言都被大牛插上了翅膀,开始在网上闲逛,寻找数据分析的原材料。

  之前我主要使用Python3作为爬虫,主要工具是request、Beautiful Soup和lxml。Python虽然有Scrapy等成熟的框架,但一般都是直接根据需要写代码。后来看Node.js的文档,发现Node.js有一个http(s)模块,可以满足请求。此外,还有类似于 Python 中的请求。因此,使用 Node.js 作为爬虫更方便。至于关心Node.jsVSPython的,可以百度或者谷歌。

  我google了一下,发现有一些零星的资料在讲Node.js爬虫,但是代码风格和工具比较杂:有的写函数,有的写箭头函数;有些在任何地方都使用 var,有些使用 let 和 const。主要原因是 Node.js 是 JavaScript 运行时环境。作为一种动态语言,JavaScript 一直在修订和改进标准的 ECMAScript。从2015年开始,该市基本上每年都会发布一个版本的ECMAScript。另外,Node.js 本身也是一个版本皇帝。

  ================================================== ====================

  这次用到的工具:

  Win10 64bit

Visual Studio Code 1.9.0

Node.js7.5.0

  用来演示的是《上海证券报》官方网站/。本演示仅供学习使用,并无其他不良意图。

  ================================================== ====================

  简单的爬虫流程可以概括为:发送请求-获取网页-提取信息-保存信息-分析数据-报告结论。

  首先,我们来看看最简单的链接。

  

  这里的demo主要是发送请求和读取网页。这段代码与 Python 基本类似。只需几行代码就可以读取网站的整个首页信息。Node.js 默认为 utf8 编码。这种编码比较通用,遇到gbk编码的网页需要单独处理。因为 / 使用了 http 协议,所以使用了 Node.js http 模块。如果 网站 是 https 协议,则相应地使用 https 模块。这两个模块是 Node.js 的内置模块。但是如果使用第三方模块请求,就不用担心网站是http还是https,请求都可以处理。

  -------------------------------------------------- -------------------------------------------------- -----------------------

  以上只是直接读取网页信息,并没有解析网页信息。分析之后,你就可以抓取你关心的数据了。这里介绍一个第三方包cheerio,其功能类似于Python中的lxml和BS。

  这里主要演示几个常用的功能。

  如何清除H5、CSS和JS的标签信息,只保留网页的文字信息?

  

  上面的信息看起来还是有点乱,怎么去掉空格?直接保留你关心的信息,方便你做进一步的分析,比如文本分析。

  

  上面的处理太难了。那么如何清除多余的空格呢?

  

  上面直接演示了整个页面的信息处理。那么如何提取我们关心的信息呢?

  假设我们要从“上海证券交易所快车”中提取信息。

  

  具体的 Node.js 代码如下。

  

  主要通过标签和属性值来定位。详情如下图所示。

  

  看完《上证快报》,我们来看看有哪些“研究报告”?

  

  

  -------------------------------------------------- -------------------------------------------------- -----------------------

  网站还有搜索功能。这让 Node.js 爬虫可以闲逛。

  

  距离人大、政协还有一段时间,但资本市场听完会议已经有所动作。让我们来看看热门新闻。这里引入了一个新的模块querystring,主要是构造一个新的url。当然也可以用url模块来构造。这里的关键字就是我们关心的关键词,当然也可以设置成其他的关键词。t 的值为 1 检索新闻,值为 0 检索所有网页。如果你想知道新闻链接和新闻时间,只需添加一行代码。

  console.info($('p.link').text());

  

  ================================================== ====================

  前面提到的简单爬虫过程可以概括为:发送请求-获取网页-提取信息-保存信息-分析数据-报告结论。

  这里我们引入一个新的第三方包请求,同时引入Node.js自带的模块fs。这是一个简单而完整的小爬虫。

  上传代码。

  

  上图中的代码主要实现了打印待抓信息、保存待抓信息、保存整个网页。

  

  ================================================== ====================

  总之,在VSC里养一个Node.js爬虫,在资本市场信息里闲逛,没什么意思。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线