python 利用bottle微服务提供post接口,供第三方调用

================================jiekou.py
# coding=utf-8
'''
Created on 2017年5月9日

@author: chenkai
'''
import bottle
import urllib
import struct
from getscoretext import GetScore

def geturltoutf8(srcString):
unquotedString = urllib.unquote(srcString)
#print repr(unquotedString)
textString = unquotedString.decode('utf-8')
#print textString
return textString


@bottle.route('/score', method='POST')
def score():
data =bottle.request.body.readlines()#获取请求参数列表
#转换参数编码格式
pltext=geturltoutf8(data[0]) #第一个参数,URL编码转utf8
print pltext #打印请求参数值
#开始情感分析
result=GetScore(pltext) #这个功能是我写在getscoretext.py文件中的一个函数
print result
return result #返回参数

bottle.run(host='localhost', port=8083)


==================getscoretext.py代码
# coding=utf-8
'''
Created on 2017年5月9日

@author: chenkai
'''
from snownlp import SnowNLP
from nltk.collocations import BigramCollocationFinder
from nltk.metrics import BigramAssocMeasures
import re
import jieba
import jieba.analyse
import json


def GetScore(text):
#1.标点符号处理
text = re.sub("[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*()]+".decode("utf8"), "".decode("utf8"),text)
#2.结巴分词(关键词提取)
#listGJC=jieba.analyse.extract_tags(text, topK=20, withWeight=False, allowPOS=())
listGJC=jieba.cut(text,cut_all=False)
#print "关键词提取:",",".join(listGJC)
text_jieba="#".join(listGJC).split("#")
good=0.0
bad=0.0
sinple=0.0
sum=0.0
for j in text_jieba:
if SnowNLP(j).sentiments <= 0.38:
bad=bad+1
if SnowNLP(j).sentiments > 0.38 and SnowNLP(j).sentiments < 0.5 :
sinple=sinple+1
if SnowNLP(j).sentiments >= 0.5:
good=good+1
sum=sum+SnowNLP(j).sentiments
print j,"=",SnowNLP(j).sentiments
goodscore=good/len(text_jieba)
badscore=bad/len(text_jieba)
info={}
info["wordlength"]=len(text_jieba)
info["avgscore"]=sum/len(text_jieba)
info["goodpercent"]=goodscore
info["badpercent"]=badscore
info["sinplepercent"]=sinple/len(text_jieba)
if badscore>0.15:
info["result"]=1
else:
info["result"]=0
#list.append(info)
jsonStr = json.dumps(info)
return jsonStr

===========================java调用接口代码

package com.teamdev.jxbrowser.chromium.demo.other.天猫;

import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;

import org.jsoup.helper.HttpConnection;

public class testscore {
//协议
public static void trustEveryone() {
try {
HttpsURLConnection
.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname,
SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}

public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}

public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
} }, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context
.getSocketFactory());
} catch (Exception e) {
// e.printStackTrace();
}
}
//请求商品信息
public static String search(String text) throws Exception {
URL baseurl = new URL("http://localhost:8083/score");
trustEveryone();
org.jsoup.Connection conn = HttpConnection.connect(baseurl);
conn.timeout(10000);
conn.header("Accept", "*/*");
conn.header("Accept-Encoding", "gzip, deflate, br");
conn.header("Accept-Language", "zh-CN,zh;q=0.9");
conn.header("Connection", "keep-alive");
//conn.header("Host", "mdskip.taobao.com");
//conn.header("Referer", "https://detail.tmall.com/item.htm?id="+id);
//conn.header("Cookie", "thw=cn; t=a00d02c664bfb837ed72484a4c81b509; cna=Z2zxEk5cmzACATz97ObN6ov8; tg=0; ucn=unzbyun; enc=QGMlzseKJil6PL%2B9EBrcNAPJ1zsoZDXaYNm%2BJX2VHlYHBE8YfKw%2B%2B1a5R02Iruwh7HrAPubO94INS4g4nQ5Azg%3D%3D; tracknick=%5Cu68A6%5Cu6E38%5Cu5BFB%5Cu5EA6; lgc=%5Cu68A6%5Cu6E38%5Cu5BFB%5Cu5EA6; UM_distinctid=16566b104a5157-0b2e12dbec7a96-323b5903-100200-16566b104a6b0; hng=CN%7Czh-CN%7CCNY%7C156; miid=947420887426720300; x=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0%26__ll%3D-1%26_ato%3D0; mt=ci=18_1&np=; cookie2=1c7db674ce04faf9d9d10eecc37faeea; _tb_token_=7eef3da3ae591; v=0; dnk=%5Cu68A6%5Cu6E38%5Cu5BFB%5Cu5EA6; unb=2515522037; uc1=cookie16=UIHiLt3xCS3yM2h4eKHS9lpEOw%3D%3D&cookie21=U%2BGCWk%2F7p4mBoUyS4E9C&cookie15=UtASsssmOIJ0bQ%3D%3D&existShop=false&pas=0&cookie14=UoTfLQFjjQxSGg%3D%3D&tag=8&lng=zh_CN; sg=%E5%BA%A674; _l_g_=Ug%3D%3D; skt=d85039103e9a8fc4; cookie1=VFdi4GN5svKzDAyUwgbmoE2X8eRTQusiTld1jf9kv2k%3D; csg=9b28e004; uc3=vt3=F8dBzrSFNJwfzcOT7IM%3D&id2=UU2zVX4u382s1Q%3D%3D&nk2=oHTaof9n%2ByM%3D&lg2=W5iHLLyFOGW7aA%3D%3D; existShop=MTUzNjI4MzUzMA%3D%3D; _cc_=VFC%2FuZ9ajQ%3D%3D; _nk_=%5Cu68A6%5Cu6E38%5Cu5BFB%5Cu5EA6; cookie17=UU2zVX4u382s1Q%3D%3D; isg=BC8v8o66qDfe0qzgFxWNOu2avkOVwqqZj5wh9UG82R6lkE-SSaQWRt5BFsAL7Ftu; _umdata=ED82BDCEC1AA6EB95DD9C2BFA38139DABBD97FE15A9C9936CBE3A614AD5D495278CF76D202BDA457CD43AD3E795C914C597301369918D8F1F05B885FD44466E4; x5sec=7b226d616c6c64657461696c736b69703b32223a223966376362353736643363623537396365393834376637346562343738633933434a4843794e7746454f655932714f516e2b2b5171674561444449314d5455314d6a49774d7a63374d513d3d227d");
//conn.header("upgrade-insecure-requests", "1");
conn.header("User-Agent","Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36");
conn.data("text",text);
conn.ignoreContentType(true);
String result = conn.post().text();
//JSONObject ajson = new JSONObject(result);
return result;
}
public static void main(String[] args) {
try {
System.out.println(search("什么都不送"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值