将经纬度转换成地图图片并且加上标签用微信发出去--我的第一个python程序

前情提要:
最近在自学python,希望能爬些数据,给我做交易提供一些参考。
自学了两周左右,前两天,把币安的api调通了,能够获取一些价格数据什么的,然后我想,以后程序跑起来之后,不能盯着看啊,跑出来结果,需要自动通知,所以就想到用微信给自己发消息。
然后搜了一下,发现python正好有微信的开源库。装上之后,发现发消息很方便。然后又想发图片,又找了一个处理图片的开源库玩了一下。
再后来,因为我现在的工作需要,上次有客户提出,希望我们在售的一个系统,能够自动微信提醒,将系统里面的经纬度告警信息推送给相关的工作人员。我就想,趁这个机会,做个demo小程序出来,把这个功能做掉,正好熟悉一下。
因此,最终我的第一个python程序,变成了一个,输入经度、纬度、地图标签、微信接收人,然后,程序调用高德地图的api,将经纬度转换成地图,然后将这张地图截图,然后将图片发送给制定的微信联系人接收。

这个程序用到的库:
Pillow:图片处理
itchat:微信第三方开源库
selenium:浏览器模拟开发框架
chromedriver:chrome浏览器的headless版本,配合selenium做开发调试的,相当于一个命令行控制的chrome浏览器开发环境

这些东西呢,你直接用 pip install xxx命令安装就行
有时候安装完会报错,说在xxx地址下没有找到xxx包,那你就去github下载对应版本的软件,然后解压到xxx地址去就行了。还不行就把path环境变量配置一下。

装pillow的时候碰到一个问题,我发现图片打开不显示,解决办法参加我前一篇文章:https://blog.csdn.net/weixin_41852927/article/details/81985544

装selenium这个库(很大,一百多兆)之后,又装了一个PhantomJS浏览器,结果程序能运行,但是报了告警,说已经不支持phantomjs浏览器了,让我下载chrome或者火狐,因为我平时都是用的chrome,我就下载了一个chromedriver来用。搞了很久,是能用了,但是有个问题没有解决,因为浏览器我希望在后台调用,不要显示出来,但是目前还没找到解决办法。哪位大神知道麻烦指导一下,感谢。

另外,这里需要用到高德地图的api,请提前去他们官网申请一个个人开发者的key。位置标注的api网址:https://lbs.amap.com/api/lightmap/guide/point

好了废话不说,看代码:

from PIL import Image   #图片处理
import itchat           #微信第三方库
from selenium import webdriver    #浏览器开发框架

#微信登录,获取好友列表
itchat.auto_login(hotReload=True)
friends = itchat.get_friends()[0:]

#根据备注名字,查找并返还好友ID
def find_friend(friend_Name):
    for i in friends:
        if i["RemarkName"] == friend_Name: #因为我给我朋友的备注是
            return i["UserName"]




while(1):
    p_longitude = input('请输入入侵无人机的经度: \n')
    p_latitude = input('请输入入侵无人机的纬度: \n')
    text=input('请输入入侵无人机相关信息:\n')
    friend_Name=input('请输入对方微信名: \n')
    friend_ID=find_friend(friend_Name)
    print('这个朋友的id是:',friend_ID)

    #调用高德地图的api,把经纬度和你申请到的key(下面代码里面的xxxxx表示你的key)输入进去,变成一个完整网址,直接访问,就是以该经纬度为中心的地图,而且该位置可以用字符备注
    url='https://m.amap.com/navi/?dest='+str(p_longitude)+','+str(p_latitude)+'&destName='+str(text)+'&hideRouteIcon=1&key=XXXXXXXXXXXXXXXX'

    #打开chrome浏览器,打开上述地图网址,窗口最大化,截屏,退出浏览器
    browser=webdriver.Chrome()
    browser.get(url)
    browser.maximize_window()
    browser.save_screenshot("position_picture.png")
    browser.close()

    #打开图片
    shot_temp=Image.open('position_picture.png')
    #shot_temp.show()

    #微信发送图片给对应的联系人
    itchat.send_image('position_picture.png',toUserName=friend_ID)

    #可以继续发送,或者输入exit退出
    exit_signal = input('\n 发送成功!!  \n按任意键继续,或者输入exit退出\n')
    if exit_signal=='exit':
        break

你可能感兴趣的:(python)