我有一个小应用,用 ruby on rails 去爬一些电视剧资源 原来是使用 bosonnlp 的 api 来计算美剧标题和简介中的关键词
最近发现 boson 好像是停止服务了 于是尝试使用 baidu 的 nlp api
因为是业余程序员,所以先在网上抄了一段代码:
可以 post 到 baidu 的那些 https 的网址上
require 'json'
require 'net/https'
require 'open-uri'
#url:对应的https请求
#toSend:对应的参数{:name => 'lzy'} 形式
def send_post(url,toSend)
uri = URI(url)
http = Net::HTTP.new(uri.host, uri.port)
if uri.scheme == "https"
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
end
req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' =>'application/json'})
req.set_form_data(toSend)
res = http.request(req)
return JSON.parse res.body
end
然后参考百度说明:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu 获取 access_token
params = {}
params[:grant_type] = 'client_credentials'
params[:client_id] = 'client_id'
params[:client_secret] = 'client_secret'
send_post 'https://aip.baidubce.com/oauth/2.0/token', params
成功获取了 access_token 下一步需要提取关键词了,就怎么都不对了。 依据百度的说明:https://ai.baidu.com/ai-doc/NLP/7k6z52ggx
代码如下:
params = {}
params[:access_token] = "#{access_token}"
params[:title] = 'iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下'
params[:content] = '如果下面的方法还是没有解决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。在通电的情况下掉进清水,这种情况一不需要拆机处理。尽快断电。用力甩干,但别把机器甩掉,主意要把屏幕内的水甩出来。如果屏幕残留有水滴,干后会有痕迹。^H3 放在台灯,射灯等轻微热源下让水分慢慢散去。'
send_post 'https://aip.baidubce.com/rpc/2.0/nlp/v1/keyword', params
得到的结果却总是:{"error_code"=>100, "error_msg"=>"Invalid parameter"}
不知道我是差了哪一步? 请大家帮忙指点一下。