阅读文本大概需要 5 分钟。

1

目 标 场 景

有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我。但是,你又很想知道女朋友的「位置」,这该如何是好?

其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信发原图给你,拿到「微信原图」后,你就可以利用 Python 快速获取到女友的具体位置了(需要相机打开地理位置)。

2

准 备 工 作

首先,在虚拟环境中安装识别图片元数据的库。

pip3 install exifread

然后,进入高德开放平台,申请一个 Web 服务的应用,获取到一个 「Key」用于逆地理编码 API。

3

编  写  脚  本

整个操作分为 3 步骤,分别是获取图片的经度和纬度、对经度和纬度进行数据矫正、调用高德逆地理编码 API 获取具体位置。

第 1 步,获取图片的「经度和纬度」。

使用 exifread 库可以直接读取图片文件,获取到图片的元数据,包含经度、纬度、南北纬方向、东西经方向和拍摄时间。

# 使用 exifread 获取图片的元数据
img_exif = exifread.process_file(open(self.img_path, 'rb'))# 能够读取到属性
if img_exif:# 纬度数latitude_gps = img_exif['GPS GPSLatitude']# N,S 南北纬方向latitude_direction = img_exif['GPS GPSLatitudeRef']# 经度数longitude_gps = img_exif['GPS GPSLongitude']# E,W 东西经方向longitude_direction = img_exif['GPS GPSLongitudeRef']# 拍摄时间take_time = img_exif['EXIF DateTimeOriginal']

如果元数据存在,然后判断拍摄时间是否合理。如果拍摄时间不在今天,那只能很遗憾地通知你,你的女朋友在向你撒谎「撒谎」。

def judge_time_met(self, take_time):"""判断拍摄时间是否是在今天:param take_time::return:"""# 拍摄时间format_time = str(take_time).split(" ")[0].replace(":", "-")# 当天日期today = str(datetime.date.today())if format_time == today:return Trueelse:return Falseif is_lie:print('很遗憾的通知你,你的女朋友在撒谎!!!')return

如果女友没有撒谎,那么可以进行第 2 步的操作。

因为通过 GPS 获取的经度、纬度和高德地图的坐标存在一定的误差,这里需要把坐标转换为「火星坐标系」。

x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # 长半轴
ee = 0.00669342162296594323  # 扁率def wgs84togcj02(lng, lat):"""WGS84转GCJ02(火星坐标系):param lng:WGS84坐标系的经度:param lat:WGS84坐标系的纬度:return:"""if out_of_china(lng, lat):  # 判断是否在国内return lng, latdlat = transformlat(lng - 105.0, lat - 35.0)dlng = transformlng(lng - 105.0, lat - 35.0)radlat = lat / 180.0 * pimagic = math.sin(radlat)magic = 1 - ee * magic * magicsqrtmagic = math.sqrt(magic)dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)mglat = lat + dlatmglng = lng + dlngreturn [mglng, mglat]

另外需要注意的是,接口中经度、纬度参数只能识别小数点后 6 位,需要对经纬度中的度、分、秒做一定的数据处理,然后再进行四舍五入。

def __format_lati_long_data(self, data):"""对经度和纬度数据做处理,保留6位小数:param data: 原始经度和纬度值:return:"""# 删除左右括号和空格data_list_tmp = str(data).replace('[', '').replace(']', '').split(',')data_list = [data.strip() for data in data_list_tmp]# 替换秒的值data_tmp = data_list[-1].split('/')# 秒的值data_sec = int(data_tmp[0]) / int(data_tmp[1]) / 3600# 替换分的值data_tmp = data_list[-2]# 分的值data_minute = int(data_tmp) / 60# 度的值data_degree = int(data_list[0])# 由于高德API只能识别到小数点后的6位# 需要转换为浮点数,并保留为6位小数result = "%.6f" % (data_degree + data_minute + data_sec)return float(result)

第 3 步,调用高德的反地理编码 API,传入申请的应用 Key,就能拿到女朋友的详细地址。

def __get_address(self, location):"""根据坐标得到详细地址:param location: 经纬度值:return:"""resp = requests.get(self.url_get_position.format(self.api_key, location))location_data = json.loads(resp.text)address = location_data.get('regeocode').get('formatted_address')return address

4

结 果 结 论

确保图片是原图的基础上,可以快速帮你判断女朋友是否在撒谎;如果女朋友没有撒谎,就返回女朋友具体的位置。

源码在阅读原文里,有女朋友的同学快发动此技能
推荐阅读:(点击下方标题即可跳转)

骚操作 !用 Python 偷偷抓取女朋友的行踪(女朋友在哪里)相关推荐

  1. 【文末赠书】我背着女朋友,用 Python 偷偷抓取了她的行踪

    1 目 标 场 景 有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我.但是,你又很想知道女朋友的「位置」,这该如何是好? 其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信 ...

  2. 我背着女朋友,用 Python 偷偷抓取了她的行踪

    全世界只有3.14 % 的人关注了 青少年数学之旅 1 目 标 场 景 有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我.但是,你又很想知道女朋友的「位置」,这该如何是好? 其实你可以这样套 ...

  3. 【实战】我背着女朋友,用 Python 偷偷抓取了她的行踪

    1 目 标 场 景 有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我.但是,你又很想知道女朋友的「位置」,这该如何是好? 其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信 ...

  4. Python网页抓取和Excel操作实战-基金筛选器

    项目背景: 最近在研究基金,想找一些基金能和自己看中的股票能够匹配起来,发现工作量不小,需要去看每只股票的基金持仓情况,然后再去比较筛选,很花时间.于是想是否能利用Python来爬取股票的基金数据,然 ...

  5. Python 多线程抓取网页 牛人 use raw socket implement http request great

    Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...

  6. python爬虫招聘-Python爬虫抓取智联招聘(基础版)

    原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...

  7. Python学习教程:Python爬虫抓取技术的门道

    Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...

  8. Python 多线程抓取网页

    Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...

  9. python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)

    一.乱码问题描述 经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下 原因是源网页编码和爬取下来后的编码格式不一致 二.利用encode与decode解决乱码问题 字符串在Python内部的 ...

最新文章

  1. 怎样使一排文字中间有间隔_超级间隔条在中空玻璃中的应用
  2. 面绘制经典算法:MarchingCube实现(控制台篇)
  3. java实现九九乘法表的输出
  4. 超强Mac数据恢复软件:Disk Drill Enterprise Mac
  5. Amazon S3数据一致性模型
  6. 为什么要发展鸿蒙,我们为什么需要鸿蒙?
  7. pycharm安装scrapy失败_python爬虫框架scrapy
  8. Cesium 显示CZML数据
  9. excel计算二元线性回归_怎么看懂Excel线性回归参数
  10. OSChina 愚人节乱弹 —— 开个小电影专栏放一天
  11. 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
  12. 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始
  13. Cisco NAT --- 从内网用公网IP地址访问内网服务器
  14. 【游戏精粹】模拟群体行为:Flocking算法
  15. Mysql coalesce()函数认识和用法
  16. [编程题] 创造新世界
  17. 《奔跑吧Linux内核》开始预售啦
  18. 2.Matlab画好图后,如何插入到word里面去
  19. Qt for Automation 介绍
  20. 2021京东Java面试真题:杭州java工资

热门文章

  1. 【ACM】杭电OJ 2000
  2. 再一次输给了AI,弯道急速超车、登上 Nature 封面
  3. 这个机器狗引起网友争议,「持枪机器狗」射程达1200米
  4. 代码写对了还挂了?程序媛小姐姐从 LRU Cache 带你看面试的本质
  5. AI真人表情包、斗地主AI......DeeCamp学员做了50个好玩又实用的AI项目
  6. 新闻智能分类练习赛开始报名啦!最先达到80分就可以领GPU,技术书籍!
  7. 清华大学人工智能研究院成立听觉智能研究中心,将专注基础研究和成果产业化
  8. 受用一生的高效PyCharm使用技巧
  9. 李飞飞计算机视觉经典课程上线,今年都有哪些新内容?
  10. 耗时3天,上亿数据如何做到秒级查询?