![4c4f291cd514c9bb4c1a909710ad5240.png](https://i-blog.csdnimg.cn/blog_migrate/c8d2e49f8c3963b17d2a6e3bb9d4e050.jpeg)
组内有个妹子是影视剧迷,平时就喜欢刷剧刷电影,一般影视剧版权都控制在各个视频平台手里,想看电影自由的话,恐怕得充好几个会员,问我有没有比较科学的方式,当然有啊,某天堂,某鸟,某源网等等有很多,但这些网站大多被劫持,时不时跳出一些非法广告,非常影响心情,那就做一个小型的爬取工具送给她吧
选择electron
的原因很简单,跨平台
,node
,基本就满足这个小工具的出生了
一、electron的能力
行业惯例,先用几句简单的话描述下electron
electron
是由GitHub开发的,使用web技术来构建跨平台桌面应用程序的一个开源库,下图将electron
非常迷人的特性都表现出来了
![0c4eb73487f0d043c34492bc69518a7b.png](https://i-blog.csdnimg.cn/blog_migrate/6f2334aab4b378cebe8a55e09a28000a.jpeg)
优点:
- 将 Chromium 与 Node.js 集成到同一个运行时环境中
- 不必考虑兼容性问题,只需关注 Chromium 版本即可
- 使用 Node 强大的API,可以使web页面操作文件,调用系统API,操作数据库…
- 也不必考虑跨域问题
缺点:
- 性能上比原生应用要低
- 最终打包后体积较大
- Apple越发的对web开发者不友好
二、准备爬取内容
我们以某天堂为例,打开开发者工具,发现网页ssr处理的,没有接口,OK,那就解析网页,拿到我们想要的东西 只需要两个库就可以
- superagent
- cheerio
1、先封装一个请求函数,用来请求页面
const superagent = require('superagent')
const superagentCharset = require('superagent-charset')(superagent)
// 请求
export function superagentReq (url, method, charset1 = 'utf-8', params, data, cookies) {
return new Promise(function (resolve, reject) {
superagentCharset(method, url)
.charset(charset1)
.query(params)
.send(data)
.end((err, response) => {
if (err) {
reject(err)
}
resolve(response)
})
})
}
2、拿到页面html后,我们使用cheerio
解析页面就好了,使用过jQuery的同学用起来无压力,用法十分相似
let targetDom = $('#Zoom span table').length !== 0
? $('#Zoom span table')
: $('#Zoom span')
$(targetDom).find('a').each((i, e) => {
if ($(e).attr('href') !== '#') {
dowmloadUrl.push($(e).attr('href'))
} else {
dowmloadUrl.push($(e).text())
}
})
页面我就不赘述了,就是普通的Vue开发
成品效果
![9f4978934621ef20c304e4392195aa2c.png](https://i-blog.csdnimg.cn/blog_migrate/622130eee741386c79d5a0d7f3afc1cc.jpeg)
![82e734bd4eb51d2dd0224a97464c59e7.png](https://i-blog.csdnimg.cn/blog_migrate/e8aeed4e78bd4a9807cdbf5df571c743.jpeg)
![f22a0cb25a1df09ecc6a5f84c4b06e79.png](https://i-blog.csdnimg.cn/blog_migrate/5c52e2e67b7113a88374fe5b9b978a3a.jpeg)
具体代码请详见GitHub 以及 安装包下载 (支持Windows、Macos)
请喜欢的朋友点个star支持一下,会持续更新搜索源