wxpy库学习(linux下登录,后台运行)

在python中使用wxpy模块

安装

pip install wxpy

使用

#导入模块

from wxpy import *

#初始化机器人,扫码登陆

bot = Bot()

找到好友

#搜索名称含有 “name” 的男性上海好友

my_friend = bot.friends().search('name', sex=MALE, city="上海")[0]

发送消息:

#发送文本给好友

my_friend.send('Hello WeChat!')

#发送图片

my_friend.send_image('my_picture.jpg')

移植到linux服务器的登录问题

之前微信扫描二维码不识别,console设置成1,2,True均不行,修改成-2后成功。
此段代码为金山词霸的每日一句英文。

#/usr/bin/env python

from threading import Timer
import requests
from wxpy import *
##bot = Bot()
bot = Bot(console_qr=-2,cache_path=True) #移植到linux,console_qr设置True和2都无法扫描登录,设置-2之后正常登录。

def get_new():
    url = "http://open.iciba.com/dsapi"
    r= requests.get(url)
    content = r.json()['content']
    note = r.json()['note']
    return content,note


def send_news():
    try:
        contents = get_new()
        print (contents)
        my_friend = bot.friends().search('好友名字')[0]
        my_friend.send(contents[0])
        my_friend.send(contents[1])
        my_friend.send("have a good day!")
        t = Timer(86400,send_news)
        t.start()
    except:
        my_friend = bot.friends().search('自己名字')[0]
        my_friend.send("今天发送失败")

if __name__=="__main__":
    send_news()

在linux服务器的后台运行

nohup python name.py & 启动后,打开nohup.out文件进行二维码扫描。
通过ps -ef|grep python可查看进程

增加天气发送代码后的乱码问题

加那么多打印是为了确认下代码是否正常

def get_weather():
        url1 = 'http://www.weather.com.cn/data/cityinfo/101190508.html'
        r = requests.get(url1)
        print(r)
        r_weather_json=r.json()['weatherinfo']
        print(r_weather_json)
        r_city=r_weather_json['city']
        print (r_city)
        r_temp1=r_weather_json['temp1']
        print (r_temp1)
        r_temp2=r_weather_json['temp2']
        print (r_temp2)
        r_weather=r_weather_json['weather']
        print (r_weather)
        r_ptime=r_weather_json['ptime']
        print (r_ptime)
        r_total='%s今天的气温%s~%s,天气%s,发布时间%s'%(r_city,r_temp1,r_temp2,r_weather,r_ptime)
        print (r_total)
        return r_total
  • 字符集调整多次仍然乱码

-- coding: utf-8 --

wxpy库学习(linux下登录,后台运行)_第1张图片

  • 网上搜索requests库导致的乱码问题
    使用apparent_encoding可以获得真实编码
r.apparent_encoding
'utf-8'

解决方法

>>> print(r.json())
{'weatherinfo': {'city': 'æµ·é\x97¨', 'cityid': '101190508', 'temp1': '17â\x84\x83', 'temp2': '21â\x84\x83', 'weather': '大å\x88°æ\x9a´é\x9b¨', 'img1': 'n23.gif', 'img2': 'd23.gif', 'ptime': '18:00'}}
>>> r.encoding = 'utf-8'
>>> print(r.json())
{'weatherinfo': {'city': '海门', 'cityid': '101190508', 'temp1': '17℃', 'temp2': '21℃', 'weather': '大到暴雨', 'img1': 'n23.gif', 'img2': 'd23.gif', 'ptime': '18:00'}}
>>> 

这里发现没有import json但是requests中直接使用了
这是因为requests内置了json解码器

你可能感兴趣的:(python的库)