百度下拉菜单-Json.Document

Power Query 静静 ⋅ 于 2018-09-13 16:09:25 ⋅ 最后回复由 Alex 2018-10-30 14:24:24 ⋅ 4681 阅读

想要获取百度下拉菜单的内容.
网上抄了自定义代码,写完是

let
源 = #table({"a"},{{"张三"},{"李四"}}),
gain = (x)=>Json.Document(Web.Contents("http://suggestion.baidu.com/su?wd="&Uri.EscapeDataString(x))),
res = Table.AddColumn(源, "x", each gain([a]))
in
res

结果会出现提示:
DataFormat.Error:JSON输入的结尾有多余的字符.
详细信息:
Value=
Position=0

不知道问题出在哪里?求指点.

成为第一个点赞的人吧 :bowtie:
最佳答案
  • Alex MOD 社区清洁工
    2018-09-13 16:23:37

    以 "张三" 为例,返回的是:

    window.baidu.sug({q:"张三",p:false,s:["张三疯奶茶","张三眼镜店","张三李四王五赵六后面是什么","张三的歌吉他谱","张三丰异界游","张三的歌 歌词","张三疯","张三丰原式太极拳","张三丰和郭襄"]});

    这并不是标准的 Json 格式,所以直接用 Json.Document 解析不了,需要去掉括号之外的多余文本。
    修改为:

    let
        源 = #table({"a"},{{"张三"},{"李四"}}),
        gain = (x)=>Json.Document(
                        Text.BetweenDelimiters(
                            Text.FromBinary(Web.Contents("http://suggestion.baidu.com/su?wd="&Uri.EscapeDataString(x)),0),
                            "(",")")
                    )[s],
        res = Table.AddColumn(源, "x", each gain([a]))
    in
        res
回复数量: 10
  • Alex MOD 社区清洁工
    2018-09-13 16:23:37

    以 "张三" 为例,返回的是:

    window.baidu.sug({q:"张三",p:false,s:["张三疯奶茶","张三眼镜店","张三李四王五赵六后面是什么","张三的歌吉他谱","张三丰异界游","张三的歌 歌词","张三疯","张三丰原式太极拳","张三丰和郭襄"]});

    这并不是标准的 Json 格式,所以直接用 Json.Document 解析不了,需要去掉括号之外的多余文本。
    修改为:

    let
        源 = #table({"a"},{{"张三"},{"李四"}}),
        gain = (x)=>Json.Document(
                        Text.BetweenDelimiters(
                            Text.FromBinary(Web.Contents("http://suggestion.baidu.com/su?wd="&Uri.EscapeDataString(x)),0),
                            "(",")")
                    )[s],
        res = Table.AddColumn(源, "x", each gain([a]))
    in
        res
  • 静静
    2018-09-13 16:37:49

    @Alex 好的.谢谢你.
    另外多请教三个问题.
    1.标准的Json格式应该是什么样的呢?
    2.Text.FromBinary第二参数是0和936是什么区别?
    3.Json和Jsonp有什么区别吗?
    从哪里学习到这些的介绍呢?

  • 雷公子
    2018-09-13 21:45:54

    @Alex 正解

  • Alex MOD 社区清洁工
    2018-09-13 21:57:30

    @静静 1 和 3 自己百度吧,936 是简体中文 GB2312 的编码,0 是我自己试出来的,两个都可以用吧

  • 逍遥之 从事电商,物流供应链行业
    2018-10-30 11:52:51

    @Alex [s] 这个是代表什么意思?

  • 逍遥之 从事电商,物流供应链行业
    2018-10-30 11:57:11

    知道了,是解析出来的record

  • Alex MOD 社区清洁工
    2018-10-30 11:57:58

    @逍遥之 Json.Document 返回 record,[s] 深化出 record 中的字段

  • 逍遥之 从事电商,物流供应链行业
    2018-10-30 14:18:26

    @Alex 还有个问题,这个地址是怎么找到并确认的?http://suggestion.baidu.com/su?wd=

  • 逍遥之 从事电商,物流供应链行业
    2018-10-30 14:20:11

    file

    这个里面没找到很明显的地址。不知道这个地址是否还需要其他情况进行?

  • Alex MOD 社区清洁工
    2018-10-30 14:24:24

    @逍遥之 百度搜索 "百度下拉api" ,有公开的api请求地址,F12也能找到,就是你这个sp0开头的,都能用,一样的

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter