egg.js爬取百度图片

每天浏览大量的文章,看起来我不想写那些接口,脑瓜疼。

我今天下手的是百度图片,,,eggjs用起来很方便,egg.js实现了一个小小的爬虫,

首先搭建起来egg--->详情看egg.js文档,这里我就不再写安装egg了

congfig.default.js配置模块中写上:

 //配置公共的url
  config.api = "http://image.baidu.com/channel/listjson?pn=0&rn=30&tag1=%E7%BE%8E%E5%A5%B3&tag2=%E5%85%A8%E9%83%A8&ftags=%E7%BE%8E%E5%A5%B3##%E5%86%85%E5%9C%B0&ie=utf8";

  return config;

路由模块:

  router.get('/news', controller.news.news);

新建service,用来写爬虫抓取数据:

'use strict';

const Controller = require('egg').Controller;

class NewsService extends Controller {
  async getNewsList() {
    //抓取数据接口
    const ctx = this.ctx;
    const result = await ctx.curl(this.config.api, {
      // 必须指定 method
      method: 'POST',
      // 通过 contentType 告诉 HttpClient 以 JSON 格式发送
      contentType: 'json',
      data: {

      },
      // 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
      dataType: 'json',
    });
    var res = result.data;

    return res;
  }

}

module.exports = NewsService;

控制器中的news:

'use strict';

const Controller = require('egg').Controller;

class NewsController extends Controller {
  async index() {
    var list = await this.service.news.getNewsList();
    
    this.ctx.body = list;
  //  await this.ctx.render("index",{
  //    list:list
  //  })
  }
  async news(){
       await this.ctx.render("index")
  }
}

module.exports = NewsController;

注意我在上面安装了模板插件, egg-view-ejs 不过我没有用上,我在前台处理了,,哈哈哈

前台代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        img{
            width: 400px;
            height: 400px;

        }
    </style>
</head>
<body>
    <div>
           
    </div>

   
</body>
<script src="/public/jquery.min.js"></script>
<script>
$.ajax({
    url:"/",
    success:function(res){
        var data = res.data;
     for(var i = 0; i<data.length; i++){
         if(data[i].download_url == undefined){
             return;
         }
         $("div").append(` <img src="${data[i].download_url}" alt="">`);
     }
    }
})
</script>
</html>

小生技术有限,,,最近在学习egg.js发现很有趣,所以就写了一个小小的爬虫,希望大佬们点个赞,

 

效果:
egg.js爬取百度图片