- request
-
获取对应的html片段,但是不能获取片段中的标签
-
request:第一个参数表示对应的请求的url地址
-
第二个参数表示回调
-
回调中有三个参数,第一个参数表示错误
-
第二个参数表示返回的响应
-
第三个参数表示实际的响应体
-
var request = require('request');
/*request:获取对应的html片段,但是不能获取片段中的标签*/
/*request:第一个参数表示对应的请求的url地址
* 第二个参数表示回调
* 回调中有三个参数,第一个参数表示错误
* 第二个参数表示返回的响应
* 第三个参数表示实际的响应体*/
request('http://www.jianshu.com/',function (error, response, body) {
/*出错的原因*/
console.log('error:', error);
/*打印相应码*/
console.log('statusCode:', response && response.statusCode);
/*响应体:即html页面中的内容*/
console.log('body:',body);
});
- 如果我们想要获取片段中的标签,我们需要借助cheerio这个包,把对应的html片段转化成jquery对象
/*request:获取对应的html片段,但是不能获取片段中的标签
* 如果我们想要获取片段中的标签,我们需要借助cheerio这个包
* 把对应的html片段转化成jquery对象*/
var cheerio = require('cheerio');
/*load:参数表示对应html片段
* 这个方法可以把html片段转化成一个jquery对象,我们就可以通过jquery对象来操控对应的标签*/
var $ = cheerio.load('<h2 class="title">Hello world</h2>');
$('.title').text('Hello there!');
$('h2').addClass('welcome');
console.log($.html());
- request、cheerio和iconv-lite的综合运用
var request = require('request');
var cheerio = require('cheerio');
var iconV = require('iconv-lite');
/*我们node.js默认的编码格式是utf8,但是对应的爬虫导入的包使用的编码格式是gb2312
* 我们可以使用request默认的编码就是gb2312,但是当我们获取对应的body后我们需要对body
* 进行解码*/
/*request第一个参数可以是一个字典
*实际开发中,我们有时候需要请求的时候设置多个参数
* 一个url不能满足条件,所以我们需要使用字典 */
var option = {
/*设置url 设置请求方法,设置对应的编码格式*/
// url:'http://edu.qq.com',
// encode: null,//使用默认编码格式
//
// method:'GET'
method:'GET',
/*使用默认的编码格式,这里一定要赋值为null*/
encoding:null,
url:'http://tech.qq.com'
};
request(option,function (err, response, body) {
/*当我们获取对应body的时候,我们需要对他进行解码
* decode:第一个参数表示解码的值
* 第二个参数表示解码的格式*/
body = iconV.decode(body,'gb2312');
/*body转化成jquery对象*/
var $ = cheerio.load(body);
console.log($('.color_black').text());
});
网友评论