使⽤nodejsCrawler模块爬取页⾯dom数据,图⽚和视频等详解jquery下载文件请求
使⽤ nodejs Crawler模块爬取页⾯数据
你好! 这是你第⼀次使⽤ Markdown编辑器 所展⽰的欢迎页。如果你想学习如何使⽤Markdown编辑器, 可以仔细阅读这篇⽂章,了解⼀下Markdown的基本语法知识。
1. 安装 crawler 模块
npm install Crawler
2. 创建爬⾍对象,开始爬取
var c =new Crawler({
maxConnections :10,
// This will be called for each crawled page
callback :function(error, res, done){
//爬好之后会执⾏这个回调函数
if(error){
console.log(error);
}else{
noargsconstructor
//将爬好的数据赋值给juqery对象
var $ = res.$;
// $ is Cheerio by default
//a lean implementation of core jQuery designed specifically for the server
// 爬取页⾯结构dom树
console.log($("html").html());
// 爬取页⾯的图⽚
console.log($('#lg > img').attr('src'));
memorystream c
}
done();
}
});
// 写⼊需要爬取⽹页的地址
tree的复数形式
c.queue('www.baidu');
3. 爬取⽂件
3.1 爬取页⾯结构dom树
通过 $ 获取 html 节点的html ⽂本信息
console.log($("html").html());//获取的是页⾯的所有 dom 树,如下所⽰
3.2 爬取页⾯的图⽚
此时就可以根据页⾯结构获取dom树,进⾏数据获取,如:获取页⾯ #lg 下⾯的 src 图⽚地址数据console.log($('#lg > img').attr('src'));
4. 爬取视频⽂件
我们这⾥爬取的是哔哩哔哩⼤型视频⽹站,基本上⼤型⽹站都可以爬取的话,⼩⽹站更别说了。
需要使⽤操作⽂件模块,所有需要引⼊ fs 模块
var crawler =require("crawler");
var fs =require('fs');
var c =new crawler({
encoding:null,
jQuery:false,// set false to suppress warning message.
phpstrtouppercallback:function(err, res, done){
if(err){
<(err.stack);
}else{
//将爬取好的⽂件通过fs模块写⼊⽂件
}
done();
}
});
//绝⼤多数⽹站,都有反爬机制。只有⼩众⽹站没有。所以我们需要使⽤以下配置
//浏览器可以下载,但是服务端爬⾍⽆效。反爬:检测你这个请求是通过浏览器发出来,还是服务端(解决⽅案:让服务端伪装成浏览器来发这个请求)
c.queue({
url:"upos-hz-mirrorcos.acgvideo/upgcxcode/97/31/76823197/76823197-1-6.mp4?um_deadline=1550575994&platform=html5&rate=77500&oi =3085779014&um_sign=db48251bc5b1372571ebb345b6a1a098&gen=playurl&os=cos&trid=84e2a7ae166240fbb86a73d28ff5f1c1",
filename:"./video/11111.mp4",//写⼊⽂件名默认在根⽬录
headers:{'User-Agent':'requests'}//让服务端伪装成客户端
});
web前端源码根据页⾯的 vidio 标签,可以获取到视频的地址,我们只需要在 url:地址⾥⾯拼接上 http + 获取的地址即可
本地⽂件存放地址和⽂件名
5. 总结
可以爬页⾯结构dom数,就可以根据页⾯结构的标签,类名获取页⾯需要的数据。
可以利⽤页⾯结构的数据地址,爬取下载图⽚,视频等。
但是爬取视频,有的⽹站是爬取不了的,有反扒机制。PC端视频如果是flash插件加载的视频是不能爬取的。但是可以切换到⽆线端,爬取⽆线端的数据。像哔哩哔哩这种⼤型PC和⽆线都有数据的⽹站
只有浏览器可以下载,服务端爬⾍⽆效。需要反爬:检测你这个请求是通过浏览器发出来,还是服务端(解决⽅案:让服务端伪装成浏览器来发这个请求)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。