js 爬虫抓取网页数据(上海证券报的官方网站.js演示/js演示仅供学习)
优采云 发布时间: 2021-11-02 10:06js 爬虫抓取网页数据(上海证券报的官方网站.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爬虫,在资本市场信息里闲逛,没什么意思。