1.安裝request模塊
npm install request --save
基本形式
//request(options,callback) request({ url: url,//請求路徑 method: "POST",//請求方式,默認為get headers: {//設置請求頭 "content-type": "application/json", }, body: JSON.stringify(requestData)//post參數字符串 }, function(error, response, body) { if (!error && response.statusCode == 200) { } });
1.1簡單示例
var request = require('request'); request('https://www.baidu.com', function (error, response, body) { console.log(body)//打印百度首頁html內容 }) or request({url:'https://www.baidu.com'}, function (error, response, body) { console.log(body)//打印百度首頁html內容 })
2.結合文件流
進行網絡爬蟲的時候,有時我們需要保存圖片、js、css等文件,request支持文件流
request('https://www.baidu.com/img/bd_logo1.png').pipe(fs.createWriteStream('a.png')) //抓取百度logo並保存到本地
也可以將文件傳給PUT或POST請求,用於文件上傳。未提供header的情況下,會檢測文件后綴名,在PUT請求中設置相應的content-type。
fs.createReadStream('pic.jpg').pipe(request.put('http://veb.com/upload')) //讀取流pipe上傳
3.表單上傳
request.post('http://service.com/upload', {form:{key:'value'}})
or
request.post('http://service.com/upload').form({key:'value'})
formData形式
var r = request.post('http://veblen.com/upload') var form = r.form() form.append('my_field', 'my_value') form.append('my_buffer', new Buffer([1, 2, 3])) form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png')) form.append('remote_file', request('https://www.baidu.com/img/bd_logo1.png'))
附上nodejs重定向(跟request沒關系)
res.writeHead(302, { 'Location': 'https://www.baidu.com' //add other headers here... }); res.end();
結合cheerio
爬蟲很酷
//npm install cheerio var cheerio = require('cheerio'); var $ = cheerio.load('<ul id="fruits">...</ul>');//jquery 一樣的操作