• 用node.js从零开始去写一个简单的爬虫


    如果你不会Python语言,正好又是一个node.js小白,看完这篇文章之后,一定会觉得受益匪浅,感受到自己又新get到了一门技能,如何用node.js从零开始去写一个简单的爬虫,十分钟时间就能搞定,步骤其实很简单。node的安装就不一步步的解释了,如果不会可以自行百度。在node开大环境下开始第一步:

    1:在d盘新建一个文件夹WebSpider


    5640239-1fcd47c34dacf552.png
    图片.png

    2:cmd右键以管理员模式打开,进入d盘,cd 进入刚刚创建的文件夹里面
    cd WebSpider


    5640239-52052674fbf44103.png
    图片.png

    3:mkdir FirstSpider (创建一个FirstSpider文件夹)

    5640239-7b1692c8a053bc82.png
    图片.png

    创建FirstSpider文件夹之后的目录


    5640239-85fd05aabcd29de5.png
    图片.png

    4:进入刚刚创建的文件夹里面 cd FirstSpider


    5640239-869965b1e214621f.png
    图片.png

    5: npm init (初始化工程)

    此时需要填写一些项目信息,你可以根据情况填写,当然也可以一路回车。


    5640239-72333f7ce9a03037.png
    图片.png

    创建完项目后,会生成一个package.json的文件。该文件包含了项目的基本信息。


    5640239-5125017a2f381bb2.png
    图片.png
    5640239-ed8a2bc849284f9b.png
    图片.png

    6:安装第三方包(后面程序会直接调用包的模块)

    说明:由于http模块、fs模块都是内置的包,因此不需要额外添加。

    这里安装cheerio包,和request包。request 用于发起http请求
    cheerio 用于将下载下来的dom进行分析和提取 你可以把它当做jQuery来用

    在cmd中,cd进入cd FirstSpider文件夹,然后执行命令:
    npm install cheerio –save


    5640239-a9413f33da80a9a0.png
    图片.png

    安装完cheerio包后,继续安装request包, npm install request –save


    5640239-f27c974f020b1d58.png
    图片.png

    说明:npm(nodejs package manager),nodejs包管理器;
    –save的目的是将项目对该包的依赖写入到package.json文件中。

    如果想要将爬取的数据和图片分类放好,那就事先建立一个data和image文件夹准备着。
    在FirstSpider文件夹下新建

    创建子文件夹data(用于存放所抓取的新闻文本内容)
    创建子文件夹image(用于存放所抓取的图片资源)
    创建一个first_spider文件
    

    整个项目的目录结构如下图所示:


    5640239-db834cea9401a3d2.png
    图片.png

    7:重点内容,打开first_spider,并一行一行的敲代码,如果你不想写代码的话,去网站上找一些代码过来进行测试即可。

    var request = require('request')
    var cheerio = require('cheerio')
    for(var i = 1;i<4;i++){
      request('http://www.souweixin.com/personal?t=41&p='+i,function(error,response,body){
        if(!error && response.statusCode == 200){
          $ = cheerio.load(body)
          var links = [];
            $(".boldBorder > a").each(function(i,item){
              links.push($(this).attr("href"))
            })
          for(var i=0;i<links.length;i++){
            request('http://www.souweixin.com'+links[i],function(error,response,body){
              if(!error && response.statusCode == 200){
                $ = cheerio.load(body)
                console.log('weixin: '+$('.bold').text()+'   name: '+$('h1').text()+'   desc: '+$('.f18').text());
              }
            })
          }
        }
      })
    }
    

    8:运行程序,命令很简单哦
    在cmd命令行下,cd 到你创建工程文件夹FirstSpider下,然后 node first_spider.js 程序就跑起来了。


    5640239-94ea1e4d1c78b96c.png
    图片.png

    9:注意:如果这个时候遇见这样的bug

    5640239-26e2681a5bd88e6b.png
    图片.png

    80端口被占用,这里额外的提一下:
    解决端口被占用的问题:https://www.jianshu.com/p/a7fc19b0c2f1

    找到这些端口,一个个关闭即可


    5640239-a7b740f48eac7528.png
    图片.png

    原文作者:祈澈姑娘
    技术博客:https://www.jianshu.com/u/05f416aefbe1
    90后前端妹子,爱编程,爱运营,爱折腾。 坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见.

  • 相关阅读:
    html5中input弹窗时,不弹出输入法弹出。
    ajax异步提交
    WinForm更新文件
    固态硬盘上安装Windows8(ghost)启动问题
    刷新页面Js
    流媒体
    WebOffice上传Word限制设置
    js页面传参中文乱码问题
    weboffice(点聚)在传参为汉字时的乱码问题
    Linq中Lanbda表达式做参数
  • 原文地址:https://www.cnblogs.com/ting6/p/9725366.html
Copyright © 2020-2023  润新知