# -*- coding: utf-8 -*-
'''''
SDK for alidayu requires: python3.x, requests @author: raptor.zh@gmail.com
requests 打包出错故替换成urllib库
''' #import requests
import urllib.request
import urllib.parse
import hashlib
from time import time
import json
import logging logger = logging.getLogger(__name__) class RestApi(object):
def __init__(self, key, secret, url="https://gw.api.tbsandbox.com/router/rest", partner_id=""):
self.key = key
self.secret = secret
self.url = url
self.partner_id = partner_id def sign(self, params):
#===========================================================================
# '''签名方法
# @param parameters: 支持字典和string两种
# '''
#===========================================================================
if isinstance(params, dict):
params = "".join(["".join([k, v]) for k,v in sorted(params.items())])
params = "".join([self.secret, params, self.secret])
sign = hashlib.md5(params.encode("utf-8")).hexdigest().upper()
return sign def get_api_params(self):
params = {}
try:
[params.__setitem__(k, getattr(self, k)) for k in self.get_param_names()]
except AttributeError:
raise Exception("Some parameters is needed for this api call")
[params.__setitem__(k, getattr(self, k)) for k in self.get_option_names() if hasattr(self, k)]
print(params)
return params def getResponse(self, authorize=None):
sys_params = {
"method": self.get_api_name(),
"app_key": self.key,
"timestamp": str(int(time() * 1000)),
"format": "json",
"v": "2.0",
"partner_id": self.partner_id,
"sign_method": "md5",
}
if authorize is not None:
sys_params['session'] = authorize
params = self.get_api_params()
sign_params = sys_params.copy()
sign_params.update(params)
sys_params['sign'] = self.sign(sign_params)
headers = {
'Content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
"Cache-Control": "no-cache",
"Connection": "Keep-Alive",
}
#headers = {"Content-Type":"application/x-www-form-urlencoded;charset=utf-8"} sys_params.update(params)
logger.debug(json.dumps(sys_params))
data = urllib.parse.urlencode(sys_params).encode('utf-8')
r = urllib.request.Request(self.url, data, headers)
result = urllib.request.urlopen(r).read().decode('utf-8')
return result
#r = requests.post(self.url, params=sys_params, headers=headers)
#r.raise_for_status()
#return r.json() class AlibabaAliqinFcSmsNumSendRequest(RestApi):
def get_api_name(self):
return "alibaba.aliqin.fc.sms.num.send" def get_param_names(self):
return ['sms_type', 'sms_free_sign_name', 'rec_num', 'sms_template_code'] def get_option_names(self):
return ['extend', 'sms_param']

调用接口

     import json
from alidayu import AlibabaAliqinFcSmsNumSendRequest
from TianQi_Spider import GetWeather def sms_send(phone):
weather = GetWeather() appkey = '236******'
secret = 'e81e81691c0cdbaacbfae2f***'
url = 'https://eco.taobao.com/router/rest'
# params = {'name':'ks2','num':'50'}
req = AlibabaAliqinFcSmsNumSendRequest(appkey, secret, url)
req.extend = ""
req.sms_type = "normal"
req.sms_free_sign_name = "**天气"
#req.sms_param="{\"weather\":\"\"{name}.format(name=today_weather)\"\"}"
#req.sms_param=json.dumps(params)
req.sms_param=str(weather)
req.rec_num = phone
req.sms_template_code = "SMS_482***"
try:
resp = req.getResponse()
print(resp)
except Exception as e:
print(e) sms_send('178***')
print("天气已爬取,短信发送成功")

pyhthon 利用爬虫结合阿里大于短信接口实现短信发送天气预报的更多相关文章

  1. 短信接口调用以及ajax发送短信接口实现以及前端样式

    我们短信api用的是云信使平台提供的非免费短信服务:官网提供的demo有两种,分别是function加其调用.class文件加其调用. 在这里我们用class文件加调用: 首先,ThinkPHP里面自 ...

  2. 利用爬虫、SMTP和树莓派3B发送邮件&续集&(爬取墨迹天气预报信息)

    -----------------------------------------------学无止境----------------------------------------------- 前 ...

  3. Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)

    一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...

  4. 中国网建SMS短信接口调用(java发送和接收手机短信)

    1.先注册账号,一定要填写好签名格式.不填会返回-51错误.   代码信息接口详细==>http://sms.webchinese.cn/api.shtml   . 2.测试代码 package ...

  5. asp.net mvc短信接口调用——阿里大于API开发心得

    互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短 ...

  6. Thinkphp5使用阿里大于短信验证

    现在各种平台登录验证很多时候会使用短信验证,快捷安全,有很多平台提供短信验证服务,相比较而言阿里大于价格比较便宜,快捷,所以在在千锋日常的php教学中多以此为例来说明短信验证的使用.下面我们在tp5中 ...

  7. thinkphp5阿里大于短信接口

    function autumn_sendsms($tel,$stype){ $pd_go=true; if($tel==''){ $msg='手机号不能为空'; $pd_go=false; } if( ...

  8. thinkphp 5.0整合阿里大于验证码短信发送接口,含完整模型验证实例DEMO

    为大家分享一个阿里大于短信发送接口: 首先创建一个发送模型(Send.php): <?php namespace app\index\model; use think\Validate; cla ...

  9. Delphi阿里云短信【支持短信发送、短信批量发送和查询短信发送记录】

    作者QQ:(648437169) 点击下载➨Delphi阿里云短信             阿里云api文档 [Delphi 阿里云短信]是最新的阿里云短信接口,不是阿里大于短信接口,支持SendSm ...

随机推荐

  1. Python匿名函数(lambda)

    result = lambda [arg1 [, arg2, .....]]:expression result:用于调用lambda表达式 [arg1 [, arg2, -]]:可选参数,用于传递参 ...

  2. selenium +python webdriver运行时报错cannot find Chrome binary

    今日在公司电脑运行自动化测试脚本,出现cannot find Chrome binary报错 百思不得其解,排错后发现应该是电脑以前有配置driver文件路径,driver所在文件路径已变更,现pyt ...

  3. C++ Primer 笔记——运行时类型识别

    1.dynamic_cast运算符的使用形式如下: dynamic_cast<type*>(e) // e必须是一个有效指针 dynamic_cast<type&>(e ...

  4. 微信小程序 Video默认横屏

    wxml文件 <video id='myvideo' src='你的视频文件路径'> </video> js文件 onLoad: function (options) { va ...

  5. 步步为营-74-Request,Response和server的其他成员

    Request 1 Request.UrlReferrer 获取请求的来源 2 Request.UserHostAddress 获取访问者的IP地址 3 Request.Cookies 获取浏览器发送 ...

  6. python指定分隔符来分割文件

    1 import re 2 p = re.compile('AAAAAAAA',re.S) 3 f = open(r"D:\test\oldfile.txt","r&qu ...

  7. Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://slaver1:9000/user/hadoop/tb_user already exists

    1.当时初学Sqoop的时候,mysql导入到hdfs导入命令执行以后,在hdfs上面没有找到对应的数据,今天根据这个bug,顺便解决这个问题吧,之前写的http://www.cnblogs.com/ ...

  8. [LeetCode] Best Time to Buy and Sell Stock 6道合集【DP】

    1. Best Time to Buy and Sell Stock 2. Best Time to Buy and Sell Stock II 3. Best Time to Buy and Sel ...

  9. [转]EndNote导入IEEE文献的方法

    EndNote导入IEEE文献的方法.IEEE虽然可以批量导出,但是批量导出的是CSV格式.如果想导入到EndNote,需要一个个文献的导入.本文介绍一下IEEE导出文献并导入到EndNote的方法. ...

  10. c# 调apicontroller

    public string Post(ModelCs mod) { string formData = Newtonsoft.Json.JsonConvert.SerializeObject(mod) ...