“”"
@Author : chenli
文档说明:
@retry装饰器的使用
在爬虫代码中,requests请求网页常常请求失败或错误,一般操作是判断状态和超时,需要多次请求,这种情况下,若想优雅实现功能,
可以尝试使用retrying包下的retry装饰器
重要的几个参数如下:
stop_max_attempt_number:在停止之前尝试的最大次数,最后一次如果还是有异常则会抛出异常,停止运行,默认为5次
wait_random_min:在两次调用方法停留时长,停留最短时间,默认为0,单位毫秒
wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒
retry_on_result:指定一个函数,如果指定的函数返回True,则重试,否则抛出异常退出
retry_on_exception: 指定一个函数,如果此函数返回指定异常,则会重试,如果不是指定的异常则会退出
import requests, json
from wxpy import *
robot = Bot() # 定义robot对象
# 图灵机器人获取回复消息
def talks_robot(info='hello worle'):
api_url = 'http://www.tuling123.com/openapi/api' # 图灵机器人api接口
apikey = 'xxxxxxxxx' # 图灵api密钥,自己花钱买一个月试试
data = {'key': apikey, 'info': info}
req = requests.post(api_url, data=data).text # 通过接收消息info,对数据在封装,向灵图机器人发出请求请求,并获得回复
replys = json.loads(req)['text'] # loads方法是把json对象转化为python对象,dumps方法是把pyhon对象转化为json对象
return replys # 返回回复数据
@robot.register()#灵图机器人注册
def tuling_reply(msg): # 回复来自其他好友、群聊和公众号的消息
defaultReply = '我接受: ' + msg.text # 为了保证在图灵Key出现问题的时候仍旧可以回复,这里设置一个默认回复
message = '{}'.format(msg.text) # 格式转换,转换为字符串
replys = talks_robot(info=message)
return replys or defaultReply
if __name__ == '__main__':
robot.start() # 开始监听和自动处理消息
embed()