Node.js实现简易爬虫(1)

本文介绍如何使用Node.js和cheerio库进行网页爬取,详细解析了抓取电影标题的过程,包括依赖选择、页面分析及核心代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注“重度前端”

助力前端深度学习

━━━━━

前言

以前觉得爬虫之类的服务只能后端实现,不过我们有nodejs,这个事儿fe也能干了。今天就写个简单爬虫玩玩。

为什么选择利用node来写爬虫呢?就是因为cheerio这个库,全兼容jQuery语法,熟悉的话用起来真真是爽

依赖选择

  • cheerio: Node.js 版的jQuery

  • http:封装了一个HTPP服务器和一个简易的HTTP客户端

  • iconv-lite:解决爬取gb2312网页出现乱码

初步实现

既然是要爬取网站内容,那我们就应该先去看看网站的基本构成

分析页面

页面结构如下:

640?wx_fmt=png

我们可以看到每个电影的标题都在一个classulinka标签下,再往上定位,我们可以看到最外部的盒子classco_content8

ok,可以开工了

获取一页电影标题

首先引入依赖,并设定需要爬取的url

var cheerio = require('cheerio');
var http = require('http');
var iconv = require('iconv-lite');

var url = 'http://www.ygdy8.net/html/gndy/dyzz/index.html';

核心代码 index.js

http.get(url, function(sres) {
  var chunks = [];
  sres.on('data', function(chunk) {
    chunks.push(chunk);
  });
  // chunks里面存储着网页的 html 内容,将它zhuan ma传给 cheerio.load 之后
  // 就可以得到一个实现了 jQuery 接口的变量,将它命名为 `$`
  // 剩下就都是 jQuery 的内容了
  sres.on('end', function() {
    var titles = [];
    //由于咱们发现此网页的编码格式为gb2312,所以需要对其进行转码,否则乱码
    //依据:“<meta http-equiv="Content-Type" content="text/html; charset=gb2312">”
    var html = iconv.decode(Buffer.concat(chunks), 'gb2312');
    var $ = cheerio.load(html, {decodeEntities: false});
    $('.co_content8 .ulink').each(function (idx, element) {
      var $element = $(element);
      titles.push({
        title: $element.text()
      })
    })    
    console.log(titles);     
  });
});

运行node index

结果如下

640?wx_fmt=png

成功获取电影title,那如果我想获取多个页面的title呢,总不可能一个一个url去改吧。这当然有办法,请看下一期!

总结

还没写完,咱就不总结了。内容浅显易懂,仅供初学者参考,不过也不妨碍给咱点个赞。据说爱学习的fe都爱点赞。

640?wx_fmt=png

 重度前端--助力深度学习

为web前端同行提供有价值、有深度的技术文章

官网:http://bigerfe.com【建设中】

640?wx_fmt=jpeg

长按二维码关注我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值