讯飞API推荐:爬虫零基础也可以上手的服务器调用

之前在做一个教学赛的时候无意中发现了讯飞开放平台上的一系列云计算服务,使用下来非常好用,调用时需要写的代码量也很少,这里给大家分享一下。

讯飞API推荐:爬虫零基础也可以上手的服务器调用

附一个链接:讯飞云平台 

我之前使用的是对于一个三万多评论的表格进行情感分析的API,这里就以这个API为例,介绍一下这个为小白服务的云计算平台使用方式。

下图是我使用的接口API文档的开头部分:

讯飞API推荐:爬虫零基础也可以上手的服务器调用

 然后接口的说明:

讯飞API推荐:爬虫零基础也可以上手的服务器调用

 这里写过爬虫或者做后台的同学估计一眼就能明白,没有接触过的同学也没有关系,就直接看后面是怎么调接口的就可以了。(本质就是云计算,把你的变量输入别人存在服务器里面的训练好的模型或者神经网络里面输出结果)

注意:白名单的设置和接口密钥需要参考它的API文档,每一个账号的不一样,每一个也都有服务上限(eg.两万条........)

这里是说明文档里面给的一个python的demo,我对python熟一点所以套用的是这个

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import urllib.request
import urllib.parse
import json
import hashlib
import base64
import re
#接口地址
url ="http://ltpapi.xfyun.cn/v2/sa"
#开放平台应用ID
x_appid = "3a000566"
#开放平台应用接口秘钥
api_key = "61706d080610aaaebf0e9ad5ae4956e7"
#语言文本
TEXT="汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。"


def analysis_sentence(url, x_appid, api_key, TEXT):
    body = urllib.parse.urlencode({'text': TEXT}).encode('utf-8')
    param = {"type": "dependent"}
    x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8'))
    x_time = str(int(time.time()))
    x_checksum = hashlib.md5(api_key.encode('utf-8') + str(x_time).encode('utf-8') + x_param).hexdigest()
    x_header = {'X-Appid': x_appid,
                'X-CurTime': x_time,
                'X-Param': x_param,
                'X-CheckSum': x_checksum}
    req = urllib.request.Request(url, body, x_header)
    result = urllib.request.urlopen(req)
    result = result.read()
    string = result.decode('utf-8')
    kk = re.compile('score".*?,')
    try:
        score = re.findall(kk, string)[0].split(':')[1].strip(',')
    except:
        score = 'none'
    return score

print(analysis_sentence(url, x_appid, api_key, TEXT))

我在处理自己表格的时候就偷个懒,把原始数据放在了同一级目录下面好调用一点

讯飞API推荐:爬虫零基础也可以上手的服务器调用

然后其实就是爬虫的过程了,调用服务器,写入数据,反复三万多次,因为单日的服务上限是20000,所以我借了两个密钥hh,具体代码如下(我的密钥现在无效了)

from WebLtp_python3_demo import analysis_sentence
import xlwt
import xlrd


url ="http://ltpapi.xfyun.cn/v2/sa"
#开放平台应用ID
x_appid = "3a000566"
#开放平台应用接口秘钥
api_key = "61706d080610aaaebf0e9ad5ae4956e7"
#语言文本

def main():
    workBook1 = xlrd.open_workbook('earphone_sentiment(1).xls')
    sheet = workBook1.sheet_by_index(0)
    workbook2 = xlwt.Workbook(encoding='utf-8')
    worksheet = workbook2.add_sheet('My Worksheet')
    worksheet.write(0, 0, 'content')
    worksheet.write(0, 1, 'analysis score')
    for i in range(1000):
        text = sheet.cell(i + 1, 1).value
        if text:
            worksheet.write(i + 1, 0, sheet.cell(i + 1, 1).value)
            print(analysis_sentence(url, x_appid, api_key, text))
            worksheet.write(i + 1, 1, analysis_sentence(url, x_appid, api_key, text))
        workbook2.save('analysis_score.xls')

if __name__ == '__main__':
    main()

 这样就可以在同一级目录下直接得到一个同样结果的xl文件。

上一篇:实验九IPV6


下一篇:正则表达式小记