# -*- 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. mysql常见安全加固策略

    原创 2017年01月17日 21:36:50 标签: 数据库 / mysql / 安全加固 5760 常见Mysql配置文件:linux系统下是my.conf,windows环境下是my.ini: ...

  2. 用C语言实现窗口抖动

    #include "stdafx.h" #include <stdio.h> #include<Windows.h> int main() { ; //休眠 ...

  3. 从零开始学C#——数据类型(三)

    C#数据类型 在C#中,变量分为以下几种类型: 值类型 引用类型 指针类型 值类型 值类型变量可以直接分配给一个值,他们是从类System.ValucTpyc中派生. 值类型直接包含数据,比如int. ...

  4. Windows 7 64bit VS2015 配置CUDA

    1. 更新驱动 下载系统显卡驱动,首先在设备管理器中查看自己的显卡型号,我的是GeForce GTX 960,然后在官网下载对应的驱动程序并安装. 官网网址:NVIDIA 驱动程序下载   2. 安装 ...

  5. Zookeeper(一)CentOS7.5搭建Zookeeper3.4.12集群与命令行操作

    一. 分布式安装部署 1.0 下载地址 官网首页: https://zookeeper.apache.org/ 下载地址: http://mirror.bit.edu.cn/apache/zookee ...

  6. nginx proxy_pass指令’/’注意事项

    1. proxy_pass配置说明 不带/ location /test/ { proxy_pass http://t6:8300; } 带/ location /test/ { proxy_pass ...

  7. FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db: Data::Dumper

    今天安装本地数据库,所遇到的错误 FATAL ERROR: please install the following Perl modules before executing ./mysql_ins ...

  8. 集群LVS

    集群分为LB负载均衡集群,HA高可用集群,LB高应用集群. 前两种比较常见 LB是更加注重性能处理速度,而HA注重是服务器的在线时间. HA集群一般设有主重,当主服务器当掉时候,重服务器进行工作,此时 ...

  9. python模块安装查看、包制作

    一. 模块安装 ubuntu : apt-get install python-pip redhat: yum install python-pip pip install 模块 pip instal ...

  10. Codeforces 781D Axel and Marston in Bitland 矩阵 bitset

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF781D.html 题目传送门 - CF781D 题意 有一个 n 个点的图,有 m 条有向边,边有两种类型: ...