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

# 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值