骚操作 !用 Python 偷偷抓取女朋友的行踪(女朋友在哪里)
阅读文本大概需要 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 偷偷抓取女朋友的行踪(女朋友在哪里)相关推荐
- 【文末赠书】我背着女朋友,用 Python 偷偷抓取了她的行踪
1 目 标 场 景 有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我.但是,你又很想知道女朋友的「位置」,这该如何是好? 其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信 ...
- 我背着女朋友,用 Python 偷偷抓取了她的行踪
全世界只有3.14 % 的人关注了 青少年数学之旅 1 目 标 场 景 有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我.但是,你又很想知道女朋友的「位置」,这该如何是好? 其实你可以这样套 ...
- 【实战】我背着女朋友,用 Python 偷偷抓取了她的行踪
1 目 标 场 景 有时候女朋友一个人在外面玩耍,问她在哪个地方,就是不告诉我.但是,你又很想知道女朋友的「位置」,这该如何是好? 其实你可以这样套路女朋友,假装自己在家很无聊,可以帮她修图,让她微信 ...
- Python网页抓取和Excel操作实战-基金筛选器
项目背景: 最近在研究基金,想找一些基金能和自己看中的股票能够匹配起来,发现工作量不小,需要去看每只股票的基金持仓情况,然后再去比较筛选,很花时间.于是想是否能利用Python来爬取股票的基金数据,然 ...
- Python 多线程抓取网页 牛人 use raw socket implement http request great
Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...
- python爬虫招聘-Python爬虫抓取智联招聘(基础版)
原标题:Python爬虫抓取智联招聘(基础版) 作者:C与Python实战 「若你有原创文章想与大家分享,欢迎投稿.」 对于每个上班族来说,总要经历几次换工作,如何在网上挑到心仪的工作?如何提前为心仪 ...
- Python学习教程:Python爬虫抓取技术的门道
Python学习教程:Python爬虫抓取技术的门道 web是一个开放的平台,这也奠定了web从90年代初诞生直至今日将近30年来蓬勃的发展.然而,正所谓成也萧何败也萧何,开放的特性.搜索引擎以及简单 ...
- Python 多线程抓取网页
Python 多线程抓取网页 - 糖拌咸鱼 - 博客园 Python 多线程抓取网页 最近,一直在做网络爬虫相关的东西. 看了一下开源C++写的larbin爬虫,仔细阅读了里面的设计思想和一些关键技术 ...
- python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)
一.乱码问题描述 经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下 原因是源网页编码和爬取下来后的编码格式不一致 二.利用encode与decode解决乱码问题 字符串在Python内部的 ...
最新文章
- 怎样使一排文字中间有间隔_超级间隔条在中空玻璃中的应用
- 面绘制经典算法:MarchingCube实现(控制台篇)
- java实现九九乘法表的输出
- 超强Mac数据恢复软件:Disk Drill Enterprise Mac
- Amazon S3数据一致性模型
- 为什么要发展鸿蒙,我们为什么需要鸿蒙?
- pycharm安装scrapy失败_python爬虫框架scrapy
- Cesium 显示CZML数据
- excel计算二元线性回归_怎么看懂Excel线性回归参数
- OSChina 愚人节乱弹 —— 开个小电影专栏放一天
- 小程序完整demo推荐:东航旅行;预订酒店,机票(适用1221)
- 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始
- Cisco NAT --- 从内网用公网IP地址访问内网服务器
- 【游戏精粹】模拟群体行为:Flocking算法
- Mysql coalesce()函数认识和用法
- [编程题] 创造新世界
- 《奔跑吧Linux内核》开始预售啦
- 2.Matlab画好图后,如何插入到word里面去
- Qt for Automation 介绍
- 2021京东Java面试真题:杭州java工资
热门文章
- 【ACM】杭电OJ 2000
- 再一次输给了AI,弯道急速超车、登上 Nature 封面
- 这个机器狗引起网友争议,「持枪机器狗」射程达1200米
- 代码写对了还挂了?程序媛小姐姐从 LRU Cache 带你看面试的本质
- AI真人表情包、斗地主AI......DeeCamp学员做了50个好玩又实用的AI项目
- 新闻智能分类练习赛开始报名啦!最先达到80分就可以领GPU,技术书籍!
- 清华大学人工智能研究院成立听觉智能研究中心,将专注基础研究和成果产业化
- 受用一生的高效PyCharm使用技巧
- 李飞飞计算机视觉经典课程上线,今年都有哪些新内容?
- 耗时3天,上亿数据如何做到秒级查询?