爬虫:代替浏览器去做一个自动访问的程序
思路:
- 首先建一个空的文件夹,在里面创建app.js
- 在命令行里面运行 npm install --save cheerio
- 找到需要爬虫的网址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文件夹后加的,存每个新闻的正文