你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
首页
热门
推荐
精选
登录
|
注册
Node.js 抓取电影天堂新上电影节目单及ftp链接
立即下载
用AI写一个
金额:
2
元
支付方式:
友情提醒:源码购买后不支持退换货
立即支付
我要免费下载
发布时间:2018-01-16
3人
|
浏览:5026次
|
收藏
|
分享
技术:Node.js
运行环境:window
概述
无需打开电影天堂页面,自动抓取节目单及ftp链接,复制ftp链接即可下载电影,方便省事。
详细
## 1 概述 本实例主要使用Node.js去抓取电影的节目单,方便大家使用下载。 ##2 node package 1. fs 2. cheerio 3. superagent 4. superagent-charset 5. express 6. path fs 用来读写文件 cherrio 类似jquery superagent (ajax http模块) superagent-charset 解决中文乱码问题 express 搭建server path 路径 统一安装这些包,可以使用一下命令: ```bash npm i express cheerio superagent superagent-charset path fs --save-dev ``` 如果想深入了解这些包 可以去下面这个网址了解下 [find package](https://www.npmjs.com/ "find package") ##3 步骤 #### 第一步: 利用express 搭建本地服务 ```javascript const app = require('express')(); const port = 3000; app.get('/', (req, res)=>{ res.send('hello world'); }); app.listen(port, ()=>{ console.log('listening port on', port); }); ``` 打开浏览器 输入[ localhost:3000]( http://localhost:3000 " localhost:3000") 看到下面页面,说明初步成功 ![](/contentImages/image/20180116/zsjoCmKBOcwnQ6gJHoA.png) #### 第二步 先试用superagent(http模块)去获取页面的数据,然后用cheerio(类似jquery)去获取页面数据。 具体代码如下 ```javascript var item = []; function getMovies() { item = []; var url = 'http://www.dytt8.net'; superagent.get(url + '/index.htm').charset().end((err, sres) => { if (err) { throw err; } var $ = cherrio.load(sres.text); $('.bd3rl .co_area2').each(function (i, n) { if (i > 1) return; var $n = $(n); var obj = { name: $n.find('.title_all strong').text(), data: [] }; $n.find('tr').each(function (i, m) { var $m = $(m); var childUrl = url + $m.find('.inddline').eq(0).find('a').eq(1).attr('href'); obj.data.push({ title: $m.find('.inddline').eq(0).text(), href: url + $m.find('.inddline').eq(0).find('a').eq(1).attr('href'), date: $m.find('.inddline').eq(1).text(), download_url: '' }); }); item.push(obj); }); fs.writeFile(path.join(__dirname, './doc', 'dy.txt'), '', function () { }); item.forEach(n => { n.data.forEach((m, i) => { superagent.get(m.href).charset().end((err, cres) => { var _$ = cherrio.load(cres.text); var download_url = _$('#Zoom table a').text(); var title = _$('.bd3r .title_all').text(); title = title.substring(title.indexOf('《') + 1, title.indexOf('》')); // console.log(title) var total_movie = title + '~~' + download_url + '\n'; // var total_movie = download_url.split(']')[1].substr(1) + '~~' + download_url + '\n'; var buff = new Buffer(total_movie); fs.appendFile(path.join(__dirname, './doc', 'dy.txt'), buff, function () { }); }); }); }); }); } ``` superagent.get()类似ajax get请求,cheerio.load() 类似jquery,获取数据的方法其实就是jquery的方法。 获取完首页的链接,一般我们需要进去详情页才能看得到ftp的地址,可是现在我们做了第二次的轮询请求,就直接得到了ftp的地址,无需进到详情页,节省很多时间。 最终我们会存到本地文件夹里 ![](/contentImages/image/20180116/5hc1goyKIDBTOiTQReo.png) 接下来我们会把这些数据呈现到页面中: ![](/contentImages/image/20180116/8rab56fBG7rydqgNy7I.png) 代码实现: ```javascript app.get('/dy', function (req, res, next) { var url_data = []; var img_url = 'https://raw.githubusercontent.com/huainanhai/EXE/master/sevenDay/doc/wz.jpg'; fs.readFile(path.join(__dirname, './doc', 'dy.txt'), 'utf-8', (err, data) => { if (err) throw err; url_data = data.split('\n').filter(function (n) { return n != ''; }); var str = '
'; str += '
(温馨提示:复制ftp开头的路径到‘迅雷极速版’(邮件附件里面有)就会自动下载电影了, 最新免费电影节目单不定时更新,福利呦)
' item.forEach(m => { str += '
' + m.name + '
'; m.data.forEach((n) => { url_data.forEach(j => { var name = j.split('~~')[0]; name = name.split('.')[0]; if (n.title.indexOf(name) > -1) { n.download_url = j.split('~~')[1]; } }); str += '
' + '
' + n.title + '
' + '
' + n.date + '
' + '
'; str += '
' + n.download_url + '
'; }); }); str += '
'; str += '
'; res.send(str); }) }); ``` ##4 源码截图 ![](/contentImages/image/20180116/hmUBdGfIbhfubcHqkbB.jpg) 如果要下载本实例,解压 然后 npm install 即可安装所需依赖包,下次我们讲解如果把数据发送到自己的邮箱(或者群发更多人的邮箱)!
本实例支付的费用只是购买源码的费用,如有疑问欢迎在文末留言交流,如需作者在线代码指导、定制等,在作者开启付费服务后,可以点击“购买服务”进行实时联系,请知悉,谢谢
感谢
4
手机上随时阅读、收藏该文章 ?请扫下方二维码
相似例子推荐
评论
作者
master2011
2
例子数量
4
帮助
4
感谢
评分详细
可运行:
4.5
分
代码质量:
4.5
分
文章描述详细:
4.5
分
代码注释:
4.5
分
综合:
4.5
分
作者例子
Node.js 抓取电影天堂新上电影节目单及ftp链接
Node.js 把抓取到的电影节目列表单发或者群发到QQ邮箱