如何使用nodejs做爬虫程序

JavaScript017

如何使用nodejs做爬虫程序,第1张

1)下载nodejs

2)下载JavaScript编辑器webStorm

如果你是个聪明的家伙,你一定能完成这两个安装。如果安装过程中,不幸遇到各种bug,那么请你自行问度娘,安装好了再继续往下看。

安装必要的模块:

Express

基于 Node.js 平台,快速、开放、极简的 web 开发框架。它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。

Request

简化HTTP请求的处理,支持OAuth的签名请求,很好很强大。

Cheerio

为服务器特别定制的,快速、灵活、实施的jQuery核心实现,像操作dom一样操作抓取文本。

mysql

node下的mysql数据库连接模块,存储抓取数据。

核心逻辑:

app.get('/', function (req, res, next) {

 // 用 superagent 去抓取 https://cnodejs.org/ 的内容

 superagent.get('https://cnodejs.org/')

   .end(function (err, sres) {

     // 常规的错误处理

     if (err) {

       return next(err)

     }

     // sres.text 里面存储着网页的 html 内容,将它传给 cheerio.load 之后

     // 就可以得到一个实现了 jquery 接口的变量,我们习惯性地将它命名为 `$`

     // 剩下就都是 jquery 的内容了

     var $ = cheerio.load(sres.text)

     var items = []

     $('#topic_list .topic_title').each(function (idx, element) {

       var $element = $(element)

       items.push({

         title: $element.attr('title'),

         href: $element.attr('href')

       })

     })

     res.send(items)

   })

})

demo:https://github.com/alsotang/node-lessons/tree/master/lesson3

纯粹前端的js 是不能 跨域 获取 cookie的

xxx.com 的js 代码 只能得到 xxx.com的cookie,拿不到 yyy.com

当然如果你有办法 在 yyy.com 写入受到自己控制的 html文件,你就可以写代码去拿到 对应的cookie,但看你的需求 应该你没有yyy.com 的权限

所以 要结合其他方案,推荐一下两种:

使用 electron ,electron 你可以认为是受js控制的浏览器引擎,所以你可以用它访问 yyy.com 拿到cookie,再接着做你的事情

或者 使用 puppeteer(Google 官方出品的 headless Chrome node 库)

Puppeteer 提供了一系列的 API,可以在无 UI 的情况下调用 Chrome 的各种功能,适用于爬虫、自动化处理等各种情景。