今天开源了一个百度云网盘爬虫项目,地址是https://github.com/callmelanmao/yunshare

百度云分享爬虫项目

github上有好几个这样的开源项目,但是都只提供了爬虫部分,这个项目在爬虫的基础上还增加了保存数据,建立elasticsearch索引的模块,可以用在实际生产环境中,不过web模块还是需要自己开发

安装

安装node.js和pm2,node用来运行爬虫程序和索引程序,pm2用来管理node任务

安装mysql和mongodb,mysql用来保存爬虫数据,mongodb用来保存最终的百度云分享数据,这些数据是json格式的,用mongodb保存更方便。

git clone https://github.com/callmelanmao/yunshare
cnpm i

推荐使用cnpm命令安装npm依赖,最简单的安装方式

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

更多安装cnpm的命令可以去npm.taobao.org上面找。

初始化

爬虫数据(主要是url列表)都是保存在mysql数据库的,yunshare使用sequelizejs做orm映射,源文件在src/models/index.js,默认的mysql用户名和密码都是root,数据看是yun,你需要手动创建yun数据库

create database yun default charset utf8

密码根据自己需要进行修改,完成mysql配置之后就可以运行下面的命令

gulp babel
node dist/init.js

注意必须先运行gulp babel把es6代码编译成es5,然后运行初始化脚本导入初始数据,数据文件在data/hot.json,里面,是从页面 http://yun.baidu.com/pcloud/friend/gethotuserlist?type=1&from=feed&start=0&limit=24&bdstoken=ac95ef31d3979f6ee707ef75cee9f5c5&clienttype=0&web=1 保存下来的。

启动项目

yunshare使用pm2进行nodejs进程管理,运行pm2 start process.json启动所有的后台任务,检查任务是否正常运行可以用命令pm2 list,正常运行的应该有4个任务。

启动elasticsearch索引

elasticsearch索引程序也已经写好了,mapping文件在data/mapping.json,请确保你已经安装elasticsearch 5.0的版本之后才运行索引程序,命令pm2 start dist/elastic.js

默认的elasticsearch地址是http://localhost:9200,如果你需要修改这个地址,可以在src/ElasticWorker.js里面修改,修改任何js源码之后记得运行gulp babel,在重启pm2任务,不然修改是不会生效的。

在完成elasticsearch配置之后,你也可以在process.json里面添加一项elastic任务,这样就不需要单独启动索引程序了。

DEMO

网盘搜索

下一篇接着介绍整个项目的整体设计思路和开发过程中遇到的问题。

实用的开源百度云分享爬虫项目yunshare - 安装篇的更多相关文章

  1. .NET DLL 保护措施应用实例(百度云分享工具)

    最近做了个小工具,将保护措施思路全部应用到了此工具中. 点我下载 “百度分享工具”介绍 大家都知道,在百度云盘中分享文件,只能手工一条条地点击“分享”,如果想分享很多文件,操作会非常辛苦.“百度云分享 ...

  2. nginx官网下载&百度云分享

    官网下载的链接: nginx官网下载地址:http://nginx.org/download/ 百度云分享 链接:https://pan.baidu.com/s/16m6zrFSkYCJtX0rD2Y ...

  3. 百度云分享文件自己设置password

    我们在用百度云分享的时候都是百度云随机给我们生成的password.我们能够通过以下的一条js脚本代码来自己定义百度云分享password javascript:require(["func ...

  4. xwalk_core_library-15.44.384 .13.aar 百度云分享

    xwalk_core_library-15.44.384.13.aar 这玩意下载很慢 特意放到百度,需要的可以通过百度下载 http://pan.baidu.com/s/1nt0Cmbn 下完后放到 ...

  5. xilinx vivado 百度云分享 vivado2019.1 2018.3 2017.4

    vivado2019.1 sdx套件 链接:https://pan.baidu.com/s/1ymRpUa2UYTFuafEChA0-ZQ 提取码:cd4p 复制这段内容后打开百度网盘手机App,操作 ...

  6. altera quartus 百度云分享 quartus prime 17.1 16.1 13.0

    quartus prime 17.1 标准版 链接:https://pan.baidu.com/s/10QWejKdDobVxDSqnVPJ0xQ 提取码:hhvj 复制这段内容后打开百度网盘手机Ap ...

  7. modelsim 仿真软件 百度云分享 modelsim se 10.7 10.6d 10.6c 10.5 10.4

    modelsim se 10.7 链接:https://pan.baidu.com/s/1NDC2yMCZmA4bIRSk2dUiTg 提取码:4l1d 复制这段内容后打开百度网盘手机App,操作更方 ...

  8. web视频资料百度云分享

    韩顺平  struts视频教程(31讲)密码:hsp789 链接:https://pan.baidu.com/s/1kSP4CFt1gpVikRaqQXkFGA 密码:kzvp 韩顺平 spring ...

  9. [GPU高性能编程CUDA实战].(桑德斯).聂雪军等.扫描版-百度云分享

    链接:https://pan.baidu.com/s/1NkkDiyRgmfmhm9d2g_GBKQ 提取码:3usj

随机推荐

  1. 【Windows 10 IoT - 1】Window 10系统安装(树莓派 Pi2)

    一.硬件准备 (1).树莓派Pi2 (2).8G 10速Micro SD卡 (3).LCD显示器(如果是VGA接口,需要加一个HDMI转VGA模块) (4).鼠标 (5).安装Windows 10的P ...

  2. Unknown class in Interface Builder file 解决方案

    在用swift项目打包Framework时,在项目中使用包时,报错: Unknown class in Interface Builder file... 网上很多解决方案,都不适合我的场景 最终解决 ...

  3. 省级联动(使用ajax实现)

    在博客园学习了很多实用的东西,现在该慢慢开始自己写写博客文章, 由于本人水平有限,刚走出校园的小菜鸟,另外,文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你 的脚印,欢迎评论! 有什么问题,可以 ...

  4. Ubuntu13.04安装历险记--Mono,Nginx,Asp.Net一个都不能少

    ----Ubuntu13.04安装历险记--新人新手新作------------------------------------------------- 注:以下操作均省略权限获取操作,如有需要,请 ...

  5. 报表session与应用session常识普及

    1. 报表session与应用session 报表集成到项目中可能会有一个疑问就是系统应用和报表应用在一个web服务器下,那系统session和报表session是不是一个session呢?如果不是那 ...

  6. 大话设计模式C++版——装饰模式

    女人常说男人喜新厌旧,只见新人笑,那闻旧人哭,但装饰模式(Decorator)却是一种结交新朋友不忘老朋友的设计模式,非常适合去古代当老公(现代是不行的,因为只能娶一个老婆了).装饰模式的本质是每一个 ...

  7. MMORPG大型游戏设计与开发(规范)

    一件事如果没有规范.章法,那么做这件事起来往往会遇到许多难题,特别是在多人协作的时候,没有到规范通常让每个人多多少少都面临着头疼的困难.举个例子,多个人要做一桌美味的饺子,有买材料.做面皮.弄肉(菜) ...

  8. 【CImg】霍夫变换——直线检测

    霍夫变换——直线检测 考古debug,其实很久之前就解决的bug......一直忘记过来改文章....欸 =============================原文================ ...

  9. 洛谷P1141 01迷宫

    题目描述 有一个仅由数字0与1组成的n×n格迷宫.若你位于一格0上,那么你可以移动到相邻4格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上. 你的任务是:对于给定的迷宫, ...

  10. 异常总结<经典例题>

    public class Test1 { public static void main(String[] args) { try { add(1); System.out.println(" ...