Nodejs爬虫实战(五)

1. 抓取标签内容
  1. 引入模块

    新模块jsdom中的JSDOM

  2. 创建对象

     let DOM = new JSDOM(html);
     let document = DOM.window.document;
    
  3. dom操作

     document.querySelector('.tm-count').innerHTML
    
    完整代码
     var index = 0;
     const fs = require('fs');
     const url = require('url');
     const gbk = require('gbk');
     const JSDOM = require('jsdom').JSDOM;
     
     GetUrl('https://detail.tmall.com/item.htm?id=548466958386&ali_refid=a3_430583_1006:1103419234:N:%E5%8D%8E%E4%B8%BA:bb84ee4c8f67c7b202d725187b7ad429&ali_trackid=1_bb84ee4c8f67c7b202d725187b7ad429&spm=a230r.1.14.1&sku_properties=5919063:6536025;12304035:116177',(data)=>{
     
     	var html = gbk.toString('utf-8',data);
     
     	let DOM = new JSDOM(html);
     	let document = DOM.window.document;
     
     	console.log(document.querySelector('.tm-count').innerHTML)
     })
     function GetUrl(sUrl,success){
     	index++;
     	var urlObj = url.parse(sUrl);
     	var http ='';
     	if(urlObj.protocol == 'http:'){
     		http = require('http');
     	}
     	else{
     		http = require('https');
     	}
     
     	let req = http.request({
     		'hostname':urlObj.hostname,
     		'path':urlObj.path
     	},res=>{
     		if(res.statusCode == 200){
     			var arr = [];
     			var str = '';
     			res.on('data',buffer=>{
     				arr.push(buffer);
     				//str +=buffer;
     			});
     			res.on('end',()=>{
     				let b = Buffer.concat(arr);
     
     				success && success(b);
     
     			})
     		}
     		else if(res.statusCode == 302 || res.statusCode == 301){
     			console.log(`第${index}次重定向`,res.headers.location);
     			GetUrl(res.headers.location,success)
     		}
     	});
     
     	req.end();
     	req.on('error',()=>{
     		console.log('404');
     	})
     }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值