<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>callmelanmao (callmelanmao)</title>
    <link>https://ruby-china.org/callmelanmao</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>实用的开源百度云分享爬虫项目 yunshare - 安装篇</title>
      <description>&lt;p&gt;今天开源了一个百度云网盘爬虫项目，地址是&lt;a href="https://github.com/callmelanmao/yunshare" rel="nofollow" target="_blank" title=""&gt;https://github.com/callmelanmao/yunshare&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="百度云分享爬虫项目"&gt;百度云分享爬虫项目&lt;/h2&gt;
&lt;p&gt;github 上有好几个这样的开源项目，但是都只提供了爬虫部分，这个项目在爬虫的基础上还增加了保存数据，建立 elasticsearch 索引的模块，可以用在实际生产环境中，不过 web 模块还是需要自己开发&lt;/p&gt;
&lt;h2 id="安装"&gt;安装&lt;/h2&gt;
&lt;p&gt;安装 node.js 和 pm2，node 用来运行爬虫程序和索引程序，pm2 用来管理 node 任务&lt;/p&gt;

&lt;p&gt;安装 mysql 和 mongodb，mysql 用来保存爬虫数据，mongodb 用来保存最终的百度云分享数据，这些数据是 json 格式的，用 mongodb 保存更方便。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/callmelanmao/yunshare
cnpm i
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;推荐使用 cnpm 命令安装 npm 依赖，最简单的安装方式&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install -g cnpm --registry=https://registry.npm.taobao.org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;更多安装 cnpm 的命令可以去&lt;a href="http://npm.taobao.org/" rel="nofollow" target="_blank" title=""&gt;npm.taobao.org&lt;/a&gt;上面找。&lt;/p&gt;
&lt;h2 id="初始化"&gt;初始化&lt;/h2&gt;
&lt;p&gt;爬虫数据（主要是 url 列表）都是保存在 mysql 数据库的，yunshare 使用 sequelizejs 做 orm 映射，源文件在&lt;code&gt;src/models/index.js&lt;/code&gt;，默认的 mysql 用户名和密码都是 root，数据看是 yun，你需要手动创建 yun 数据库&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;create database yun default charset utf8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;密码根据自己需要进行修改，完成 mysql 配置之后就可以运行下面的命令&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gulp babel
node dist/script/init.js
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意必须先运行&lt;code&gt;gulp babel&lt;/code&gt;把 es6 代码编译成 es5，然后运行初始化脚本导入初始数据，数据文件在&lt;code&gt;data/hot.json&lt;/code&gt;，里面，是从页面 &lt;a href="http://yun.baidu.com/pcloud/friend/gethotuserlist?type=1&amp;amp;from=feed&amp;amp;start=0&amp;amp;limit=24&amp;amp;bdstoken=ac95ef31d3979f6ee707ef75cee9f5c5&amp;amp;clienttype=0&amp;amp;web=1" rel="nofollow" target="_blank"&gt;http://yun.baidu.com/pcloud/friend/gethotuserlist?type=1&amp;amp;from=feed&amp;amp;start=0&amp;amp;limit=24&amp;amp;bdstoken=ac95ef31d3979f6ee707ef75cee9f5c5&amp;amp;clienttype=0&amp;amp;web=1&lt;/a&gt; 保存下来的。&lt;/p&gt;
&lt;h2 id="启动项目"&gt;启动项目&lt;/h2&gt;
&lt;p&gt;yunshare 使用 pm2 进行 nodejs 进程管理，运行&lt;code&gt;pm2 start process.json&lt;/code&gt;启动所有的后台任务，检查任务是否正常运行可以用命令&lt;code&gt;pm2 list&lt;/code&gt;，正常运行的应该有 4 个任务。&lt;/p&gt;
&lt;h2 id="启动elasticsearch索引"&gt;启动 elasticsearch 索引&lt;/h2&gt;
&lt;p&gt;elasticsearch 索引程序也已经写好了，mapping 文件在&lt;code&gt;data/mapping.json&lt;/code&gt;，请确保你已经安装 elasticsearch 5.0 的版本之后才运行索引程序，命令&lt;code&gt;pm2 start dist/elastic.js&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;默认的 elasticsearch 地址是&lt;a href="http://localhost:9200src/ElasticWorker.js`%E9%87%8C%E9%9D%A2%E4%BF%AE%E6%94%B9%EF%BC%8C%E4%BF%AE%E6%94%B9%E4%BB%BB%E4%BD%95js%E6%BA%90%E7%A0%81%E4%B9%8B%E5%90%8E%E8%AE%B0%E5%BE%97%E8%BF%90%E8%A1%8C`gulp" rel="nofollow" target="_blank"&gt;http://localhost:9200src/ElasticWorker.js`里面修改，修改任何js源码之后记得运行`gulp&lt;/a&gt;，如果你需要修改这个地址，可以在` babel`，在重启 pm2 任务，不然修改是不会生效的。&lt;/p&gt;

&lt;p&gt;在完成 elasticsearch 配置之后，你也可以在 process.json 里面添加一项 elastic 任务，这样就不需要单独启动索引程序了。&lt;/p&gt;
&lt;h2 id="DEMO"&gt;DEMO&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://biliworld.com" rel="nofollow" target="_blank" title=""&gt;哔哩搜索&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;下一篇接着介绍整个项目的整体设计思路和开发过程中遇到的问题。&lt;/p&gt;</description>
      <author>callmelanmao</author>
      <pubDate>Thu, 24 Nov 2016 10:53:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/31682</link>
      <guid>https://ruby-china.org/topics/31682</guid>
    </item>
  </channel>
</rss>
