pyhthon 利用爬虫结合阿里大于短信接口实现短信发送天气预报
# -*- 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 利用爬虫结合阿里大于短信接口实现短信发送天气预报的更多相关文章
- 短信接口调用以及ajax发送短信接口实现以及前端样式
我们短信api用的是云信使平台提供的非免费短信服务:官网提供的demo有两种,分别是function加其调用.class文件加其调用. 在这里我们用class文件加调用: 首先,ThinkPHP里面自 ...
- 利用爬虫、SMTP和树莓派3B发送邮件&续集&(爬取墨迹天气预报信息)
-----------------------------------------------学无止境----------------------------------------------- 前 ...
- Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)
一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...
- 中国网建SMS短信接口调用(java发送和接收手机短信)
1.先注册账号,一定要填写好签名格式.不填会返回-51错误. 代码信息接口详细==>http://sms.webchinese.cn/api.shtml . 2.测试代码 package ...
- asp.net mvc短信接口调用——阿里大于API开发心得
互联网上有许多公司提供短信接口服务,诸如网易云信.阿里大于等等.我在自己项目里需要使用到短信服务起到通知作用,实际开发周期三天,完成配置.开发和使用,总的说,阿里大于提供的接口易于开发,非常的方便,短 ...
- Thinkphp5使用阿里大于短信验证
现在各种平台登录验证很多时候会使用短信验证,快捷安全,有很多平台提供短信验证服务,相比较而言阿里大于价格比较便宜,快捷,所以在在千锋日常的php教学中多以此为例来说明短信验证的使用.下面我们在tp5中 ...
- thinkphp5阿里大于短信接口
function autumn_sendsms($tel,$stype){ $pd_go=true; if($tel==''){ $msg='手机号不能为空'; $pd_go=false; } if( ...
- thinkphp 5.0整合阿里大于验证码短信发送接口,含完整模型验证实例DEMO
为大家分享一个阿里大于短信发送接口: 首先创建一个发送模型(Send.php): <?php namespace app\index\model; use think\Validate; cla ...
- Delphi阿里云短信【支持短信发送、短信批量发送和查询短信发送记录】
作者QQ:(648437169) 点击下载➨Delphi阿里云短信 阿里云api文档 [Delphi 阿里云短信]是最新的阿里云短信接口,不是阿里大于短信接口,支持SendSm ...
随机推荐
- Git使用三:git的使用流程
先创建仓库 创建一个文件夹,作为仓库使用 初始化仓库,在仓库目录的命令行下输入:git init 第一步:创建一个文件,并写入内容,这里写入内容的时候,要把编码设置为utf-8 第二步:输入命令将文件 ...
- easyui实现背景图片半透明状态,悬浮在大背景之上
首先是查找素材,使用AI将所需要的图案画出来,切记将图案的背景设置为所需要的透明状态.项目使用的是easyui架构 为啥加两个背景图呢,因为这样的布局最开始是给一个矩形框加上的背景图片,若是还使用矩形 ...
- python一个用例,多组参数,多个结果
在某种情况下,需要用不同的参数组合测试同样的行为,你希望从test case的执行结果上知道在测试什么,而不是单单得到一个大的 test case:此时如果仅仅写一个test case并用内嵌循环来进 ...
- Java接口自动化测试之集成MyBatis和MySQL (五)
pom.xml新增dependency <dependency> <groupId>org.mybatis</groupId> <artifactId> ...
- node.js vue-axios和vue-resource
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 实战--使用lvs实现四层负载均衡,转发到后端nginx
这个帖子讲得很细致,基本依照这个方案实践. 只是IP是按我自己虚拟机的IP来测试的. http://www.cnblogs.com/arjenlee/p/9262737.html ========== ...
- webpack学习笔记--多种配置类型
除了通过导出一个 Object 来描述 Webpack 所需的配置外,还有其它更灵活的方式,以简化不同场景的配置. 下面来一一介绍它们. 导出一个 Function 在大多数时候你需要从同一份源代码中 ...
- [转] Lodash
与underscore 类似 , 是1个js库,内部封装了诸多对字符串.数组.对象等常见数据类型的处理函数. 模块组成 Lodash 提供的辅助函数主要分为以下几类,函数列表和用法实例请查看 Loda ...
- 在grails中远程调用action
在进行类似批处理的程序时,如果在一个action中需要保存很多记录数,这会导致grails中的数据库session超过负荷,从而导致OOM. 因为这个情况的发生是由于在一次请求中,对数据进行的修改都保 ...
- 浅谈Rsync+Inotify实时同步
Rsync是Unix/Linux旗下的一款应用软件,利用它可以是多台服务器数据保持同步一致性,第一次同步时rsync会复制全部内容,但在下次只传输修改过的文件 Rsync在传输数据的过程中可以实行压缩 ...