下面我将详细讲解Node.js编写爬虫的基本思路及抓取百度图片的实例分享。
首先,了解 Node.js 编写爬虫的基本思路:
- 发送请求:利用 Node.js 里的 http、request 等模块发送请求,拿到目标页面的 html;
- 解析页面:利用第三方库 cheerio 解析 html 页面,获取需要的信息;
- 存储数据:将需要的信息存储到本地或者数据库中。
下面我将结合实际案例,详细讲解基本思路。
- 抓取百度图片搜索结果页面
代码示例:
var request = require('request');
var cheerio = require('cheerio');
var fs = require('fs');
// 要抓取的网址
var url = 'http://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=cat';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
// 遍历所有图片
$('img').each(function(index, element) {
var src = $(element).attr('src');
// 将图片地址写入文件(文件名以 index 开头)
request(src).pipe(fs.createWriteStream(`./img/${index}_${src.split('/').pop()}`));
});
}
});
代码说明:
- 使用 request 模块向百度图片搜索结果页面发送请求。我们要抓取的是 “http://image.baidu.com/search/index?tn=baiduimage&ie=utf-8&word=cat” 网址,这个页面是关于 “猫咪” 图片搜索结果的页面。
- 解析页面:使用 cheerio 模块解析 html,遍历页面中的每一个图片元素,获取并下载对应的图片到本地文件夹。
-
将图片地址写到文件中,并使用 request 模块对图片资源进行下载。
-
抓取GitHub上star数排名前100的Repo
代码示例:
var request = require('request');
var cheerio = require('cheerio');
// 要抓取的网址
var url = 'https://github.com/trending?since=weekly';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(body);
// 遍历每一个 repo,获取 STAR 数和项目名,并输出到控制台
$('.Box-row').each(function(index, element) {
var starCount = $(element).find('div .f6').text().trim().split('\n')[0];
var repoName = $(element).find('h1 > a').text().trim().replace(/\s/g, '');
console.log(`${index + 1}: ${repoName} - ${starCount}`);
});
}
});
代码说明:
- 使用 request 模块向 GitHub 发送请求,获取排名前 100 的 repo 的信息。我们要抓取的是 “https://github.com/trending?since=weekly” 网址,这个页面是 GitHub 上的热门项目中排名前100的repo列表。
- 解析页面:使用 cheerio 模块解析 html,遍历页面中的每一个 repo 元素,获取每个 repo 的 STAR 数和项目名,并输出到控制台。
这就是 Node.js 编写爬虫的基本思路,通过发送请求,解析页面,存储数据,我们可以轻松地抓取我们需要的数据。
希望这篇文章对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Node.js编写爬虫的基本思路及抓取百度图片的实例分享 - Python技术站