nodejs简单的爬虫

爬虫:代替浏览器去做一个自动访问的程序

思路:

  1. 首先建一个空的文件夹,在里面创建app.js
  2. 在命令行里面运行 npm install --save cheerio
  3. 找到需要爬虫的网址http://sports.sina.com.cn/nba/1.shtml
//引入标准http模块
var http = require('http');
var cheerio = require('cheerio');

var fs = require("fs");

//保存爬取目标网址
var url = "http://sports.sina.com.cn/nba/1.shtml"
//向网络发生get请求,请求网络资源
http.get(url,function (res) {
    //程序发生一个http请求的时候 函数就会立马执行  res后端返回过来并且已经被解析的http报文
    var html = ""
    // 监听
    res.on("data",function (chunk) {
        //有一段流接收到之后就会执行的回调函数
        //把每一段流都拼接起来
        html += chunk
    })

    //所有信息传输完毕之后所执行的回调函数
    res.on("end",function () {
        //得到的是URL的源码
        // console.log(html)
        var $ = cheerio.load(html)
        $("#right a").each(function () {
            // console.log($(this).text())  得到新闻的标题

            var articleUrl = $(this).attr("href")
            http.get(articleUrl,function (res) {
                var html = ''
                res.on('data',function (res) {
                    html += res
                })
                res.on("end",function () {
                    // console.log(html)
                    var $ = cheerio.load(html)
                    var oText = $('#artibody').text()

                    var time = new Date().valueOf()

                    fs.writeFile("./news/nba"+time+".txt",oText,(err)=>{
                        console.log('写入成功')
                    })
                    // console.log(oText)
                })
            }).on('error',function (err) {
                //对程序意外错误进行处理
                console.log(err.message)
            })
        })
    })
})

news文件夹后加的,存每个新闻的正文

发布了42 篇原创文章 · 获赞 4 · 访问量 6105

猜你喜欢

转载自blog.csdn.net/qq_43427385/article/details/102792690