V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lake325
V2EX  ›  程序员

go 爬取 baidu+weibo+zhihu 热搜数据

  •  
  •   lake325 · 2019-09-24 17:07:53 +08:00 · 3209 次点击
    这是一个创建于 1893 天前的主题,其中的信息可能已经有所发展或是发生改变。
    https://github.com/mjrao/hotso

    样例演示接口返回 json 数据,可在 chrome 中安装 json formatter 获得极简的热搜体验
    15 条回复    2019-12-13 13:06:48 +08:00
    lake325
        1
    lake325  
    OP
       2019-09-24 17:16:14 +08:00
    有关注热搜需求的可以浏览器 收藏夹收藏

    微博: http://121.41.23.201:8806/hotso/v1/hotso/weibo/json/20
    百度: http://121.41.23.201:8806/hotso/v1/hotso/baidu/json/20
    知乎: http://121.41.23.201:8806/hotso/v1/hotso/zhihu/json/20

    一小时更新一次数据
    lake325
        2
    lake325  
    OP
       2019-09-24 19:19:34 +08:00
    url 后面数字对应你想取的数据条数
    evilic
        3
    evilic  
       2019-09-25 09:52:42 +08:00 via Android
    直接写个 workflow (捷径)获取数据并显示,然后分享也来吧。
    hebin
        4
    hebin  
       2019-09-25 09:58:00 +08:00
    fork 了一份学习了 谢谢老哥
    lake325
        5
    lake325  
    OP
       2019-09-25 10:08:35 +08:00
    http://121.41.23.201:8806/hotso/v1/hotword/weibo/json/100

    http://121.41.23.201:8806/hotso/v1/hotword/baidu/json/100

    通过结巴分词将热搜分词得到的数据,每天统计一次,数据递增(采用的是默认字典,精确模式)
    lake325
        6
    lake325  
    OP
       2019-09-25 10:10:43 +08:00
    @evilic 仓库的 readme 有介绍
    Vegetable
        7
    Vegetable  
       2019-09-25 10:16:03 +08:00
    你就不能 encodePretty 返回吗...
    lake325
        8
    lake325  
    OP
       2019-09-25 10:40:27 +08:00
    @Vegetable 已改
    Vegetable
        9
    Vegetable  
       2019-09-25 12:13:04 +08:00
    @lake325 舒服了~
    Vegetable
        10
    Vegetable  
       2019-09-25 12:17:56 +08:00
    @lake325 还有一个问题,golang 的 urlencode 库会吧&encode 成\u0026 而不是%26,具体为什么会这样我也不太清楚,但是这个地址复制出来直接粘贴到地址栏浏览器是识别不了&的.你可以考虑处理一下这个
    Vegetable
        11
    Vegetable  
       2019-09-25 12:25:26 +08:00
    哦不对,%26 也不行,这个必须是&本身才行.
    Vegetable
        12
    Vegetable  
       2019-09-25 12:44:44 +08:00
    这个问题是 go 默认的 json encoder 会将&转义掉造成的,我看了一下
    ```
    package main

    import (
    "bytes"
    "encoding/json"
    "fmt"
    )

    func main() {
    b := new(bytes.Buffer)
    enc := json.NewEncoder(b)
    enc.SetEscapeHTML(false)
    enc.SetIndent("", " ")
    enc.Encode(map[string]interface{}{"a": "&"})
    fmt.Println(b.String())
    }

    ```
    这样可以解决这个问题.
    lake325
        13
    lake325  
    OP
       2019-09-25 13:58:43 +08:00
    @Vegetable 已解决
    liangxunli
        14
    liangxunli  
       2019-09-25 14:09:14 +08:00
    收藏了
    csidez
        15
    csidez  
       2019-12-13 13:06:48 +08:00
    大佬,url 可以做成链接吗,一点就新 tap 页访问。现在的需要复制过去看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2672 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:17 · PVG 12:17 · LAX 20:17 · JFK 23:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.