Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

Nodejs-ByrTopTen

目前这是一个爬取北邮人论坛每日十大的爬虫。写得很糙很糙,重复代码太多,后续版本将会改进。

更新日志

v1.0 pro-d

  • 修复一个bug,这个bug会导致版面名称无法正确输出。

该bug的原因主要是论坛启用了https,而之前抓取版面的函数用到的正则匹配是http。

v1.0 pro-c

  • 代码整合大幅精简,感谢@BUPT-HJM的启发
  • 加入写入mongodb数据库功能
  • 更改写出的json文件形式
  • 更改爬取时间
  • 忽略node_modules文件夹,改为用户自行安装所需依赖

v1.0 pro-b

  • 修复了一个小bug,这个bug会导致toptensDay.json不按预期时间输出。
  • 改进了一个地方,使topten.json里的十大时间显示为采集时间的前一天。(注:因为十大是每天凌晨1点更新,原爬虫在1点前采集的是昨天的十大但是采集时间会显示成今天的时间)

v1.0 pro-a

这个爬虫目前能够爬取十大的基本相关信息了。每日定时在0点55分和6点00分的时候爬取论坛十大。因为十大每天在1:00更新。所以在这个时间段更新是能够获取昨天十大的最终的信息了。而6点00分作为一天早晨的开始,是能反应半夜顶贴的十大的。


使用方法

首先需要在本地配置好mongodb数据库。这个部分不再赘述,教程很多。只需配置好mongodb并开启它的服务即可。

然后在命令行内输入**npm install,将会安装所需依赖。如果你安装了cnpm的话,我也推荐你用cnpm install**来安装,会更快。

接着在命令行输入**node index.js**,程序将运行,在23点55分的时候就会生成一个叫做toptens-date.json,在6点00分的时候会生成toptensDay-date.json,其中的date将会是当天的日期。

如果你想要立刻看到效果的话,可以将 var nightJob = schedule.scheduleJob('* 55 23 * * *', function(){toptenSpider(toptens,'toptens',1,false)});或者var dayJob = schedule.scheduleJob('* 0 6 * * *', function(){toptenSpider(toptensDay,'toptensDay',2,false)});里面的* 55 23 * * *或者* 0 6 * * *改成你想要输出的时间段,比如45 * * * * *就是每45秒执行一次。具体的语法可以参见node-schedule中cron-style语法。

toptenSpider(dbName,collectionName,flag,fileFlag)这个函数里,如果将最后一个参数fileFlag设为false将不会输出json文件

输出的格式:

[
  topten:{
    date: *,        // 日期
    info:[{
      topno: i,     // 在十大里的顺序
      title: *,     // 标题
      author: *,    // 作者
      pubDate: *,   // 发布日期
      boardName: *, // 发布版面
      link: *,      // 文章链接地址
      content: *    // 文章内容
    }]
  }
]

About

A nodejs-spider that gets the needed information of top-ten in bbs.byr.cn

Resources

License

Releases

No releases published

Packages

No packages published