前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >周末愉快

周末愉快

作者头像
数据处理与分析
发布2019-07-31 16:42:04
3550
发布2019-07-31 16:42:04
举报
抱歉,昨天的代码换行有问题,影响理解,今天重发!
如何正确的使用微信

微信作为一个生活方式,已经融入我们的生活。每天打开微信,聊天、看朋友圈、看公众号……

但微信的作用远不止于此,上一篇推送已经展示了如何使用微信来扩展FME的功能,让使用者能随时随地了解FME的运行状态。但其实我们可以做的更多,比如,动态的传入参数,来控制程序的运行!

如何做?
  1. 采集的数据 最近我在采集某地图上的信息,主要是poi与地图上的区域范围,采集成果:

1.遇到的问题 以前我也采集过这些信息,但是长时间不用,如今想在采集点信息,发现麻烦多了。网站现在会判断采集的频率,采集过快的话不会返回数据,另外还会验证cookie(某大神,道号和尚!貌似有绕过这个验证的方法,但是我没有!)。所以需要采取一些别的方法来突破这些验证!

2.解决方式 针对出现的问题,我在采集的数据中写了几个函数,来调用微信的服务接口,通过微信传入所需要的参数,比如:如果我检测到返回的状态码为6,那么我就会调用tooFast函数来处理,同样的,如果检测到cookie过期,也采用类似的方式来处理。 验证处理

import time
import requests
class get_poi():
    def setSe(self):
        #设置cookie
        st = "oo"
        requests.get('http://127.0.0.1:5000/fwx/{"XX":"通知:%s"}'%('???!cookie过期了,准备新的cookie吧!'))        
        while st != "ok":
            print('cookie过期')
            time.sleep(3)
            tst = requests.get('http://127.0.0.1:5000/jsxx').json()
            st = tst[0]
            ck = tst[1]
        requests.get('http://127.0.0.1:5000/fwx/{"XX":"通知:%s"}'%('???!新cookie已到位!开始下载了!老乡?!'))
        mSession =  self.set_cookie(ck)
        return mSession
    def tooFast(self):
        requests.get('http://127.0.0.1:5000/fwx/{"XX":"通知:%s"}'%('???!下载太快了!去电脑上进行人机验证吧!'))
        st = "oo"
        while st != "ok":
            print('你太快了,少侠!')
            time.sleep(3)
            tst = requests.get('http://127.0.0.1:5000/jsxx').json()
            st = tst[0]        #time.sleep(90)
        requests.get('http://127.0.0.1:5000/fwx/{"XX":"通知:%s"}'%('???!已通过人机验证!开始下载!'))    
    def set_cookie(self,cook):
        ptn = re.compile("(?<=Cookie: ).+?(?=##)")
        ck  = re.sub('\n','##',cook)
        lck = [i.split('=') for i in ptn.search(ck).group().split('; ')]
        sess = requests.Session()
            for i in lck:
            sess.cookies.set(i[0],i[1])        
        return sess

微信功能模块

import json
from wxpy import Bot# 初始化机器人,扫码登陆

bot = Bot()# 定义一个发微信的功能
def func_wx(string):
    #接收json作为参数,json的键值为要发送信息的对象,键值对应的内容为发送的消息
    rdict = json.loads(string)
#     print(rdict)
    for k in rdict:
#         print(rdict[k])
        my_friend = bot.friends().search(k)[0]
        my_friend.send_msg(rdict[k])
def get_xx():
    msg = bot.messages
    if msg:
        for i in msg:
            if i.sender.name == '刘松':
                rtext = i.text
                if  rtext == 'ok':
                    r =  ('ok','_')
                    msg.clear()
                elif 'Cookie' in rtext:
                    cookie = rtext
                    r =  ('ok',cookie)
                    msg.clear()
                else:
                    msg.remove(i)
                    r =  ('继续吧1!','_')
            else:
                msg.remove(i)
                r =  ('继续吧2!','_')
    else:
        r =  ('继续吧3!','_')
    return r

微信界面

  1. others 后台给我发消息的小伙伴,平时我的工作很忙,很多时候,有时间看后台了,而你们发的消息已经过期了
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 抱歉,昨天的代码换行有问题,影响理解,今天重发!
  • 如何正确的使用微信
  • 如何做?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档