- 安装依赖库
在终端中执行以下命令来创建一个新的Node.js项目并安装所需的依赖库:
mkdir my-crawler
cd my-crawler
npm init -y
npm install axios cheerio
**
其中,axios库用于向网络上的服务器发起请求,cheerio库用于解析HTML,并提供了与jQuery语法类似的API。
- 获取网页内容
在代码中,我们可以使用axios库来向指定的网址发起请求,然后获取其返回的内容。以下是一个简单的例子:
const axios = require('axios');
axios.get('https://www.google.com')
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.log(error);
});
**
在上面的代码中,我们向Google的主页发起了一个GET请求,并在控制台输出其返回的HTML内容。
- 解析HTML内容
解析HTML内容可以使用cheerio库。以下是一个通过axios和cheerio库获取并解析网页内容的示例:
const axios = require('axios');
const cheerio = require('cheerio');
axios.get('https://www.google.com')
.then((response) => {
const $ = cheerio.load(response.data);
console.log($('title').text());
})
.catch((error) => {
console.log(error);
});
**
在上面的代码中,我们使用cheerio库来将HTML字符串解析成一个可操作的DOM结构,并使用jQuery语法获取了HTML中的title标签的文本内容。
- 获取指定链接中的所有链接
在爬虫中,通常需要获取指定页面中的所有链接。以下是一个示例代码:
const axios = require('axios');
const cheerio = require('cheerio');
axios.get('https://www.google.com')
.then((response) => {
const $ = cheerio.load(response.data);
const links = [];
$('a').each((i, elem) => {
links.push($(elem).attr('href'));
});
console.log(links);
})
.catch((error) => {
console.log(error);
});
在上面的代码中,我们通过遍历页面中的所有a标签,获取了其中的href属性,然后将其存入一个数组中。
以上就是使用Node.js编写爬虫的基本步骤。如果需要更复杂的爬虫,还需要考虑内容的存储、多线程爬虫、反爬虫机制等问题。