使用nodejs实现简单爬虫

2 篇文章 0 订阅
2 篇文章 0 订阅
本文介绍了如何使用Node.js通过axios抓取网页内容,利用cheerio解析HTML,获取所需信息,并使用fs模块将数据写入本地文件。作者以豆瓣电影排行榜为例,展示了爬虫的基本步骤和工具使用。
摘要由CSDN通过智能技术生成

本人现在是一个大学的在校学生,所以可能写的不是很好,欢迎大家指正缺点,如果文章中有些不明白的或者不对的请在下方留言,写这篇文章的目的主要是为了深化和整理自己的知识,更是为了与各位相互交流共同进步。

1、node

1、Node.js是大神Ryan Dahl开发的,是一个基于Chrome V8 引擎的Javascript运行环境。
2、Node.js最初的定位是为了写服务器代码的,但是后来没有想到的是Node.js在前端领域大放光彩,如今Node.js在Web前端项目的构建与开发中有着举足轻重的地位。
3、node的下载也非常简单,在nodejs.cn中文网下载后傻瓜式下一步,就可以安装成功。
4、在很多项目中经常会遇到一些node版本问题,所以我个人比较建议安装nvm来管理多个node版本,这样就不需要在遇见node版本问题的时候,重复的卸载安装node了
5、下载node后我们可以打开cmd窗口输入node -v来查看node是否安装成功,如果出现版本号,就说明你已经安装成功了

在这里插入图片描述

6、node安装后建议在cmd窗口中输入以下代码,切换到淘宝镜像,这样可以使我们下载依赖更快,也可以下载yarn加快依赖包的下载速度,但是yarn有时可能会丢包

// 切换到淘宝镜像
npm config set registry https://registry.npmmirror.com
// 下载yarn,下载完成后输入yarn -v如果出现版本号,说明yarn已经下载成功
npm install -g yarn

2、初始化项目

我们随便创建一个文件夹,在文件夹中打开cmd窗口输入npm init后,一直回车就可以了

在这里插入图片描述

1、如果文件夹中出现了一个package.json文件,项目初始已经完成,但是为了便于我们的开发,这时我们可以下载一些成熟的依赖包来帮助我们开发。
2、我们继续在cmd窗口中下载我们所需要的依赖包,有yarn add与npm install两种下载方式:

  • axios来发起http请求
  • cheerio来便于我们获取HTML元素中的信息
  • fs将我们获取到的数据写入本地文件中
// yarn的下载方式
yarn add axios
yarn add cheerio 
yarn add fs 
// npm的下载方式
npm install axios
npm install cheerio
npm install fs

在这里插入图片描述

3、使用axio抓取页面

一切准备就绪,我们就要开始编写js代码了
1、首先在创建的文件夹中新建一个js文件,并导入下载的模块包
在这里插入图片描述
2、我们使用axios向要爬取的网站发起一个get请求

const axios = require('axios'),
    cheerio = require("cheerio"),
    fs = require('fs');

//这里的url替换成你需要爬取的网页地址
const url = 'https://movie.douban.com/';
axios.get('https://movie.douban.com/').then(res => {
    // res中有很多这个网页的信息,但我们这里只需要res.data
    // res.data:当前网页HTML文件中的所有内容,但请注意这里的HTML是字符串
})

4、使用cheerio获取网页信息

1、cheerio是一个可以解析几乎任何 HTML 或 XML 文档的工具库。
2、cheerio的用法几乎与jQuery没有任何区别,可以有效的提高我们操作dom,从而从dom中提取我们需要信息。

const axios = require('axios'),
    cheerio = require("cheerio"),
    fs = require('fs');

//这里的url替换成你需要爬取的网页地址
const url = 'https://movie.douban.com/chart';
axios.get(url).then(res => {
    // 解析HTML字符串,将其转化为我们可以操作的dom元素
    const $ = res && res.data ? cheerio.load(res.data) : '';
    let informationDataList = [];
    $('.indent>div>table').each((i, item) => {
        let obj = new Object;
        obj.id = i;
        obj.imgUrl = $(item).find('img').attr('src');
        obj.title = $(item).find('.pl2>a').text();
        obj.content = $(item).find('.pl').text();
        obj.ratingNums = $(item).find('.rating_nums').text();
        informationDataList.push(obj);
    });
    // informationDataList 存储我们需要的页面信息
})

4、使用fs将数据写入本地

fs模块我们最常用的就两个方法一个是读取readFile,另外一个就是写入writeFile

const axios = require('axios'),
    cheerio = require("cheerio"),
    fs = require('fs');

//这里的url替换成你需要爬取的网页地址
const url = 'https://movie.douban.com/chart';
axios.get(url).then(res => {
    // 解析HTML字符串,将其转化为我们可以操作的dom元素
    const $ = res && res.data ? cheerio.load(res.data) : '';
    let informationDataList = [];
    $('.indent>div>table').each((i, item) => {
        let obj = new Object;
        obj.id = i;
        obj.imgUrl = $(item).find('img').attr('src');
        obj.title = $(item).find('.pl2>a').text();
        obj.content = $(item).find('.pl').text();
        obj.ratingNums = $(item).find('.rating_nums').text();
        informationDataList.push(obj);
    });
    // 这时候的 informationDataList 是一个数组集合
    // 我们需要将这个数组集合转换为JSON字符串写入json文件中
    informationDataList = JSON.stringify(informationDataList);
    // 写入文件的路径地址
    let fileName = './data.json';
    fs.writeFile(fileName, informationDataList, err => console.log(err == null ? '写入成功!' : "写入失败"));
})

最后我们在cmd中使用node运行js文件,就成功了
在这里插入图片描述

根据链接地址将图片、视频、文件下载到本地的,请看这篇文章

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值