编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

nodejs,express,koa爬虫实战(node网络爬虫)

wxchong 2024-10-21 13:02:44 开源技术 11 ℃ 0 评论

使用nodejs,express,koa各实现一次爬虫实战。

三个项目代码放到了github:https://github.com/liangchaofei/node_crawler上,可以直接下载运行。

node爬虫

  • 安装爬虫利器superagent和cheerio 本文不作介绍。
 npm i superagent cheerio --save
  • 确定爬虫页面:http://bbs.tianya.cn/list-45-1.shtml
  • 分析页面dom结构
  • 看出每个标题都是在class为mt5下的tr下面,所以遍历.mt5下的tr
 
  • 把数据当到data目录下

express爬虫

  • 安装包
 npm install express superagent cheerio superagent-charset --save
  • 确定爬虫页面:https://www.qqtn.com/
  • 分析页面结构
  • 看出每个标题都是在div.g-main-bg ul.g-gxlist-imgbox li a下面,进行遍历
 $('div.g-main-bg ul.g-gxlist-imgbox li a').each(function(idx, element) {
 var $element = $(element);
 var $subElement = $element.find('img');
 var thumbImgSrc = $subElement.attr('src');
 items.push({
 title: $(element).attr('title'),
 href: $element.attr('href'),
 thumbSrc: thumbImgSrc
 });
 });
  • 把数据items存到img.json中
 fs.access(path.join(__dirname, '/img.json'), fs.constants.F_OK, err => {
 if (err) { // 文件不存在
 fs.writeFile(path.join(__dirname,'/img.json'), JSON.stringify([
 {
 route,
 items
 }
 ]), err => {
 if(err) {
 console.log(err)
 return false
 }
 console.log('保存成功')
 })
 } else {
 fs.readFile(path.join(__dirname, '/img.json'), (err, data) => {
 if (err) {
 console.log(err)
 return false
 }
 data = JSON.parse(data.toString())
 let exist = data.some((page, index) => {
 return page.route == route
 })
 if (!exist) {
 fs.writeFile(path.join(__dirname, 'img.json'), JSON.stringify([
 ...data,
 {
 route,
 items
 },
 ]), err => {
 if (err) {
 console.log(err)
 return false
 }
 })
 }
 })
 }
 res.json({ code: 200, msg: "", data: items });
 })

koa爬虫

  • 安装
 npm i koa koa-router cheerio superagent --save
  • 确定爬虫页面:https://www.freebuf.com/
  • 分析页面结构
  • 遍历div .news-list .news-info dl dt a
 $('div .news-list .news-info dl dt a').each((index, ele) => {
 data.push({
 title: $(ele).attr('title'),
 href: $(ele).attr('href')
 })
 })
  • 把数据添加到data.json中
 fs.access(path.join(__dirname, 'data.json'), err => {
 if (err) {
 fs.writeFile(path.join(__dirname, 'data.json'), JSON.stringify([
 {
 data
 }
 ]), err => {
 if (err) {
 return;
 }
 })
 } else {
 fs.readFile(path.join(__dirname, 'data.json'), (err, res) => {
 data = res.toString()
 if (err) {
 return;
 }
 })
 }
 })

以上把node,express,koa都简单的实现了爬虫,面对复杂的页面,还需要不断的学习其他技术。

上面三个项目代码放到了github上,可以直接下载运行。

如果对你有帮助,欢迎star。

微信公众号:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表