nodejs 30行程式碼 爬豆瓣電影資料

lkycan發表於2017-12-14

Paste_Image.png

##用nodejs 寫爬蟲 關鍵模組:cheerio、http,request。 consonl.log() 出來的資料

Paste_Image.png

首先安裝相關的模組:

//我用了某寶的映象安裝     原來是  npm,-g 可以根據自己情況是全域性按裝還是局域安裝
cnpm install -g jquery

cnpm install -g cheerio

cnpm install request

cnpm install http
......

複製程式碼

根據你需要用的的模組安裝 程式碼如下:


// 新建一個物件
var MyUtil = function () {
};
// var $ = require('../node_modules/jQuery');
var request = require('request');
// 用於 儲存body的html資料
var bodtTemp;
MyUtil.prototype.get=function(url,callback){
	// console.log("MyUtil.prototype") // 列印
	request(url, function (error, response, body) {
	  if (!error && response.statusCode == 200) {
	    // console.log(body) // 列印目標頁面
	    console.log("request ");
	    // 用臨時變數儲存起來請求回來的body資料
	    bodtTemp=body;

	    var movie={}  
		// movie.name = $(body).find('span[property="v:itemreviewed"]').text();
		// movie.director = $(body).find('#info span:nth-child(1) a').text();
	  }
	})
}
// console.log(movie);
//獲取目標網頁的資料
var temp = new MyUtil();
var httpUrl='https://movie.douban.com/subject/25921812/?tag=%E7%83%AD%E9%97%A8&from=gaia_video';
// var httpUrl='http://movie.douban.com/subject/1152952';
temp.get(httpUrl);
console.log('bodtTemp is '+bodtTemp);
// 開啟自己的http伺服器
var http = require('http')
http.createServer(function(req,res){
    res.writeHead(200,{'Content-Type':'text/html'});
    // res.write(bodtTemp);
    let cheerio = require('cheerio')
	let $ = cheerio.load(bodtTemp)
	// $('h2.title').text('Hello there!')
	// $('h2').addClass('welcome')
	// $('#db-nav-movie .nav-logo a').text("哈哈")
	// $("#dale_movie_subject_bottom_super_banner_frame").remove();
	// 移除  id 裡面的內容
	// $("#footer").remove();
	console.log($('#info').text());
	// $.html()
	// console.log($.html());
	res.write($.html());
    // res.end('<p>結束</p>');
    res.end();
}).listen(5858);

複製程式碼

儲存為index.js 檔案,切換到 你的檔案路徑,用node 命令開啟: 如:

node index.js
複製程式碼

瀏覽器開啟

http://127.0.0.1:5858/
複製程式碼

**記得要開啟瀏覽器訪問地址才能看到控制檯的資料。 ###本文為了更好閱讀以及新手可以直接執行,提高新手興趣,故把所有可執行程式碼直接放一個檔案,詳細以及一些測試也有備註。嘗試去修改一下要爬的連結以及程式碼吧,一切都是實踐中的出效果。

相關文章