Nodejs 用railwayjs作的股票跟踪系统,支持接入新浪微博,支持简单爬虫获取股票数据

Nodejs 用railwayjs作的股票跟踪系统,支持接入新浪微博,支持简单爬虫获取股票数据

用railwayjs作的股票跟踪系统,支持接入新浪微博,支持简单爬虫获取股票数据。

演进: connect->express->ejs->railway js+css->jquery+boottrap…>Highstock-1.2.4+datatables

网站放在appfog上,支持顶级域名解析. http://song3p.com

代码放在github,欢迎一起玩:) https://github.com/philsong/o2o-stock


10 回复

Node.js 用 Railway.js 作的股票跟踪系统,支持接入新浪微博,支持简单爬虫获取股票数据

演进

  • Web框架: connect -> express -> ejs -> railway
  • 前端技术栈: js + css -> jquery + bootstrap -> Highstock-1.2.4 + datatables

网站介绍

本项目是一个基于 Node.js 和 Railway.js 的股票跟踪系统。用户可以通过该系统实时跟踪股票信息,并通过简单的爬虫功能获取股票数据。此外,系统还集成了新浪微博的登录功能,方便用户使用。

技术栈

  • 后端: Node.js, Railway.js
  • 前端: jQuery, Bootstrap, Highcharts, DataTables
  • 部署平台: AppFog (现已更名为 Swisscom Application Cloud)
  • 源码托管: GitHub

部署与访问

示例代码

以下是部分核心代码片段,展示如何实现股票数据的爬取和显示。

股票数据爬虫(使用 Axios)
const axios = require('axios');

async function fetchStockData(stockCode) {
    try {
        const response = await axios.get(`https://api.example.com/stock/${stockCode}`);
        return response.data;
    } catch (error) {
        console.error('Failed to fetch stock data:', error);
        return null;
    }
}

module.exports = fetchStockData;
使用 Express 处理 API 请求
const express = require('express');
const router = express.Router();
const fetchStockData = require('./fetchStockData');

router.get('/stock/:code', async (req, res) => {
    const stockCode = req.params.code;
    const stockData = await fetchStockData(stockCode);
    
    if (stockData) {
        res.json(stockData);
    } else {
        res.status(500).send('Failed to fetch stock data');
    }
});

module.exports = router;
在 Railway.js 中集成路由
const express = require('express');
const router = require('./routes/stockRoutes');

const app = express();

// 集成路由
app.use('/api', router);

// 启动应用
const port = process.env.PORT || 3000;
app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});

结语

该项目是一个综合性的 Web 应用,集成了多种技术栈,旨在提供一个便捷的股票跟踪工具。如果您对这个项目感兴趣,欢迎参与贡献和改进!


顶卤煮,请问卤煮怎么处理爬下来的页面文件呢?比如我想解析百度首页,有什么常用的module吗?

NODEGRASS is your need

sorry, misundersand u , if u would like to parse the page, i don’t know which module can fit your requirment…

数据从哪里来啊

挂了。AppFog 404 Not Found

404…

appfog太慢了。。。

找到原因了, 因为用了 http.get这个函数,我测试只在node0.8版本上运行正常,0.6运行不正常,appfog切换到node0.84版本即可。

要构建一个基于Railway.js的股票跟踪系统,并支持接入新浪微博及简单的爬虫获取股票数据,你可以参考以下步骤和代码片段。请注意,Railway.js 已经不是非常活跃的项目,但可以基于它进行开发。

1. 准备工作

首先确保你的环境中已安装 Node.js 和 npm。然后安装必要的库:

npm install express railwayjs request cheerio oauth

这里我们使用 requestcheerio 来处理HTTP请求和HTML解析,oauth 用于处理微博的OAuth认证。

2. 获取微博数据

为了获取微博数据,你需要创建一个OAuth应用并从微博开放平台获得API密钥和秘密。

const OAuth = require('oauth');

const oauth = new OAuth.OAuth(
  'https://api.weibo.com/oauth2/authorize',
  'https://api.weibo.com/oauth2/access_token',
  'YOUR_APP_KEY',
  'YOUR_APP_SECRET',
  '1.0A',
  null,
  'HMAC-SHA1'
);

// 用户授权后的回调处理
app.get('/auth/weibo/callback', (req, res) => {
  const { code } = req.query;
  oauth.getOAuthAccessToken(
    code,
    { grant_type: 'authorization_code', redirect_uri: 'YOUR_REDIRECT_URI' },
    (err, accessToken, refreshToken, results) => {
      if (err) throw err;

      // 使用accessToken获取用户信息
      oauth.get('https://api.weibo.com/2/users/show.json', accessToken, (error, data, response) => {
        if (error) throw error;
        console.log(data);
      });
    }
  );
});

3. 简单爬虫

我们可以使用 requestcheerio 来抓取股票数据。

const request = require('request');
const cheerio = require('cheerio');

app.get('/stock/:code', function(req, res) {
  const stockCode = req.params.code;
  request(`http://hq.sinajs.cn/list=${stockCode}`, (error, response, body) => {
    if (!error && response.statusCode == 200) {
      const $ = cheerio.load(body);
      const data = $.text().split(',');
      res.send({
        name: data[0].slice(6),
        price: data[3],
        change: data[5],
        changePercent: data[6]
      });
    }
  });
});

这段代码向新浪财经请求股票信息,并通过 cheerio 解析返回的数据。

4. 集成到Railway.js

将上述代码集成到你的Railway.js项目中。你可以根据需要调整路由、视图等。

这只是一个基础示例,实际应用中可能还需要处理错误、增强安全性、优化性能等。

回到顶部