V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
newghost
V2EX  ›  分享创造

爬了三大门户网站的股票频道,网站已开源

  •  
  •   newghost ·
    newghost · 2016-01-18 10:59:11 +08:00 · 5345 次点击
    这是一个创建于 3263 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://anynb.com 是开源 ourjs 的一个 DEMO 网站,原来只爬了一些知名的博客,后来发现还是有些人访问的。

    现在加入了三大门的网站股票频道新闻,为了避免法律风险只爬了标题和链接,内容指向原文

    最新开源代码在 0.1.1 的分支    https://github.com/newghost/ourjs/tree/0.1.1 可能不稳定

    稳定简单版的代码可查看默认分支 https://github.com/newghost/ourjs/tree/0.1.x

    28 条回复    2016-01-20 18:27:58 +08:00
    yh7gdiaYW
        1
    yh7gdiaYW  
       2016-01-18 14:47:08 +08:00
    时间字体太难看了啊
    aabbccli
        2
    aabbccli  
       2016-01-18 15:02:26 +08:00
    @yh7gdiaYW 同感,整个网站的字体看起来不美丽
    figofuture
        3
    figofuture  
       2016-01-18 15:06:40 +08:00
    只是爬爬新闻还好,先马克下。
    GhostEX
        4
    GhostEX  
       2016-01-18 15:06:54 +08:00
    有意思啊,整站花了多久做出来的?
    master13
        5
    master13  
       2016-01-18 15:56:41 +08:00
    所以,你认为只要把内容指向原文就能“避免法律风险”吗?
    newghost
        6
    newghost  
    OP
       2016-01-18 15:57:28 +08:00
    @yh7gdiaYW
    @aabbccli

    默认字体是微软雅黑,改成默认的了;  时间是斜的,扶正了
    newghost
        7
    newghost  
    OP
       2016-01-18 15:58:34 +08:00
    @master13

    如果这都有风险, HackNews 早就关站了吧?
    fising
        8
    fising  
       2016-01-18 15:58:38 +08:00
    有什么意义吗。
    newghost
        9
    newghost  
    OP
       2016-01-18 16:31:43 +08:00
    @GhostEX

    这个项目比较久了,花了一个月的时间用 redis 重写了一下……
    Andy00
        10
    Andy00  
       2016-01-18 16:41:18 +08:00
    想求教一下题主是如何保证抓取每个页面都能拿到标题?是统一用 h1 标签抓取的吗?
    newghost
        11
    newghost  
    OP
       2016-01-18 16:46:26 +08:00
    @fising

    说实话,这个网站一个月前上线的,期间0推广,但我发现 Alexa 排名一直在增长,对有些人应该是有意义的
    newghost
        12
    newghost  
    OP
       2016-01-18 16:47:03 +08:00
    @Andy00

    每个网站的DOM都是不一样的,用的是 css 选择器
    Andy00
        13
    Andy00  
       2016-01-18 17:06:18 +08:00
    还是不太懂,求教题主细说一下
    我之前的做法都是把整个页面拿下来然后用用正则表达式提取,所以需要去找每个网站的页面 html 代码然后写对应的正则,感觉这种做法效率太低了,求教更高效的做法
    onion83
        14
    onion83  
       2016-01-18 17:21:12 +08:00
    那个进度条对于视频网站才有意义,一般的文字网站我觉得太晃眼了。
    newghost
        15
    newghost  
    OP
       2016-01-18 17:22:50 +08:00
    @Andy00

    anynb 全部使用 JavaScript(DOM),用 JavaScript 操作DOM再简单不过了。你可以参考以下技术

    https://github.com/atom/electron

    https://github.com/nwjs/nw.js

    http://phantomjs.org/


    有空我会整理一篇文章出来……
    newghost
        16
    newghost  
    OP
       2016-01-18 17:24:22 +08:00
    @onion83

    我就觉得这个效果还稍微绚点……
    Andy00
        17
    Andy00  
       2016-01-18 17:25:42 +08:00
    学习了学习了!
    我之前都是用 java 写,感觉入了个坑。。。决定转投 js 了
    magicdawn
        18
    magicdawn  
       2016-01-18 18:01:34 +08:00
    可以直接从 chrome devtools 复制出 selector, 放到 cheerio 的 selector 里...完美
    其他语言, BeautifulSoup / CsQuery / goquery 应该也可以, 估计要改改... 这个 node 的 cheerio 真是无敌了
    newghost
        19
    newghost  
    OP
       2016-01-18 20:14:41 +08:00
    @magicdawn

    网易的 DOM 是动态渲染出来的, cheerio 估计不合适
    cheneydog
        20
    cheneydog  
       2016-01-18 20:16:19 +08:00
    下一步添加市场情绪分析吧。
    magicdawn
        21
    magicdawn  
       2016-01-19 11:02:52 +08:00
    @newghost 那这个 DOM 动态渲染你是咋做的~

    我觉得 DOM 动态渲染分两种, 一种是 ajax 接口然后去渲染, 一种是淘宝那样, 内嵌 js 数据, 去渲染
    前面一种直接用它接口就好, 后面估计要去找 js
    newghost
        22
    newghost  
    OP
       2016-01-19 12:37:42 +08:00
    @cheneydog

    估计有难度,刚加了个新闻联播
    newghost
        23
    newghost  
    OP
       2016-01-19 12:38:28 +08:00
    @magicdawn

    参看 15 楼,使用基于浏览器的解决方案
    magicdawn
        24
    magicdawn  
       2016-01-19 13:31:10 +08:00
    @newghost
    这种估计会先看下 [nightmare]( http://www.nightmarejs.org/)
    newghost
        25
    newghost  
    OP
       2016-01-19 13:52:50 +08:00
    @magicdawn

    写法挺高级的,估计就是把 phantomjs 封装了一下
    newghost
        26
    newghost  
    OP
       2016-01-19 13:55:59 +08:00
    @magicdawn

    嗯,是基于 Electron 的
    junging
        27
    junging  
       2016-01-19 22:21:04 +08:00
    kelaodo
        28
    kelaodo  
       2016-01-20 18:27:58 +08:00
    赞一个
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1862 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 16:18 · PVG 00:18 · LAX 08:18 · JFK 11:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.