Node.js 抓取电影天堂新上电影节目单及ftp链接
代码地址如下:
http://www.demodashi.com/demo/12368.html
1 概述
本实例主要使用Node.js去抓取电影的节目单,方便大家使用下载。
2 node package
- fs
- cheerio
- superagent
- superagent-charset
- express
- path
fs 用来读写文件
cherrio 类似jquery
superagent (ajax http模块)
superagent-charset 解决中文乱码问题
express 搭建server
path 路径
统一安装这些包,可以使用一下命令:
npm i express cheerio superagent superagent-charset path fs --save-dev
如果想深入了解这些包 可以去下面这个网址了解下
find package
3 步骤
第一步:
利用express 搭建本地服务
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
看到下面页面,说明初步成功
第二步
先试用superagent(http模块)去获取页面的数据,然后用cheerio(类似jquery)去获取页面数据。
具体代码如下
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的地址,无需进到详情页,节省很多时间。
最终我们会存到本地文件夹里
接下来我们会把这些数据呈现到页面中:
代码实现:
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 = '<div style="width:50%;">';str += '<h4 style="padding-left:10px;">(温馨提示:复制ftp开头的路径到‘迅雷极速版’(邮件附件里面有)就会自动下载电影了, 最新免费电影节目单不定时更新,福利呦)</h4>'item.forEach(m => {str += '<h3 style="padding-left:10px;">' + m.name + '</h3>';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 += '<div style="">' +'<a href="' + n.href + '" style="height:30px;display:inline-block;vertical-align: middle;text-decoration:none;margin-left:6px;" target="_blank">' + n.title + '</a>' +'<span style="height:30px;display:inline-block;vertical-align: middle;color: red;float:right;">' + n.date + '</span>' +'</div>';str += '<div style="background:#fdfddf;border:1px solid #ccc;padding:3px 10px;margin-bottom:10px;">' + n.download_url + '</div>';});});str += '<img src="' + img_url + '" width="540" height="748" />';str += '</div>';res.send(str);})
});
4 源码截图
如果要下载本实例,解压 然后 npm install 即可安装所需依赖包,下次我们讲解如果把数据发送到自己的邮箱(或者群发更多人的邮箱)!
Node.js 抓取电影天堂新上电影节目单及ftp链接
代码地址如下:
http://www.demodashi.com/demo/12368.html注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权
Node.js 抓取电影天堂新上电影节目单及ftp链接相关推荐
- node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地
node.js抓取网络图片保存到本地,node.js抓取防盗链网络图片保存到本地 使用模块request.fs,request模块在npm里平均月下载量超过3000W次,那是相当的牛逼. node版本 ...
- 如何使用Node.js抓取网站
介绍 (Introduction) Web scraping is the technique of extracting data from websites. This data can furt ...
- Node.js抓取网页信息并展示(cheerio网络爬虫)
书接上回,哈哈,昨天发表了,怎么使用Node的cheerio模块进行抓取网页的信息,那我们拿到数据肯定是有自己的用处的啊. 我昨天抓取的是一些超级诱人的糕点的图片,今天展示出来,大家一起眼馋啊,啊哈哈 ...
- Node.js抓取网页信息(cheerio网络爬虫)
Node.js的学习中,可用于抓取其他网站的模块是[cheerio],这个模块并不是node的内置模块,所以首先我们需要先安装一下: 安装对应模块 安装命令: npm install cheerio ...
- node.js抓取数据(fake小爬虫)
在node.js中,有了 cheerio 模块.request 模块,抓取特定URL页面的数据已经非常方便. 一个简单的就如下 var request = require('request'); va ...
- html访问微信云数据库,node.js 抓取网页内容(针对微信小程序云开发)
最近在研究微信小程序的云开发功能.云开发最大的好处就是不需要前端搭建服务器,可以使用云端能力,从零开始写出来一个能上线的微信小程序,避免了买服务器的开销,对于个人来尝试练手微信小程序从前端到后台的开发 ...
- node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API
Node.js 14 版本于近日正式发布, 此版本包含的亮点如下: 对诊断功能的改进 升级 v8 引擎 新增实验性的异步本地存储 API 强化流 API 移除实验性模块中的警告 移除一部分早期版本中废 ...
- node爬虫,抓取网页数据
node爬虫,抓取网页数据 1.什么是爬虫? 抓取信息或者数据的程序或者是脚本 2.通过node实现对网页数据的抓取. 安装插件 request,处理请求(此包以被弃用) npm i request ...
- 如何抓取淘宝天猫上多个宝贝商品图片视频素材
今天小编要介绍的是,如何在淘宝天猫上挑选到喜欢的商品,并将所挑选到的商品图片及视频素材批量导到自己的电脑上保存?下面一起来看看小编的演示操作吧. 操作需要用的工具:载图助手 首先运行载图助手,进入首界 ...
最新文章
- 【Java基础】关键字
- 设计模式---(创建型)单例模式
- Mysql用navicat查看建表语句
- php服务划分,云计算提供的服务分为哪三个层次
- Ubuntu 18.04 修复 Linux 内核的 11 个漏洞
- 数据库的运维策略脚本篇(内附脚本,无私分享)
- 剑指OFFER之把数组排成最小的数(九度OJ1504)
- 利用正则表达式 替换字符串中多个 URL
- c++ 数字后加f_电工电子学 | 数字集成电路
- 02 - i3wm 安装、配置TIM WeChat
- Xmind 8 下载以及破解
- 中国移动面试总结(一)
- 计算机专业英语求职信范文及翻译,英文求职信范文带翻译150字-.doc
- c# DevExpress Gridview 设置表格背景颜色
- unity 获得当前物体_Unity 中关于获取到物体的方式
- java算球体积的代码_java - 球体体积法不起作用 - 堆栈内存溢出
- Python实例之调用百度API实现车牌识别
- Android OkHttp 源码解析 - 拦截器
- [USACO17OPEN Pt T2]Switch Grass 切换牧草
- 转行软件测试,简简单单3个月出来就是高薪工作,靠谱吗?我的第一桶金...