最近刚刚学完python基础,又把requests、bs4、scrapy粗略的学习了一下。因为决心学编程的动机就是想为自己爬得物app的购买记录,更理想的情况是每天定时自己去爬生成一个可以年\月\日翻看的图表(因为平日的爱好就是做小倒爷哈哈)。本来迫不及待地想来配合fiddler爬一下得物app的购买记录看看自己的学习成果如何,结果发现历史购买数据的api太复杂了,自己完全不知道该如何处理。
关于如何获取购买历史记录的api可以看看这篇文章,本文的主要思路也来源于这篇文章:https://blog.csdn.net/yjack007/article/details/104186974#comments_12815200

我的主要思路:

  1. 通过adb命令把购买记录截下来传进电脑
  2. 通过PIL模块把图片中需要的数据部分截取出来
  3. 调用腾讯云文字识别的api来识别图中文字(本来想用tesseract-ocr的,可是先后用了别人训练好的库,自己又去训练了很多张图,效果都不怎么样)
  4. 把尺码、时间、价格整理出来放到三个列表中
  5. 写入excel文件

本人水平有限,刚刚接触编程,写代码水平较差,不嫌弃的可以参考一下下面我的代码。当然,有更好的意见也欢迎大家和我一起交流。
最后,立下flag:未来知识储备足够之日一定回来用更好地方法解决这个问题!

import os, time
from PIL import Image
import re
import xlwt
import base64
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.ocr.v20181119 import ocr_client, models count = 0def swipe_screen():# 向下滑动屏幕os.system('adb shell input swipe 250 785 300 200')def screen_shot():# 屏幕截图到电脑com1 = 'adb exec-out screencap -p >' + str(count) + '.png'os.system(com1)def main():# 初始化pages = input('需要爬取的页数: ')print("请进入'最近购买'页面,并保持屏幕唤醒状态")for i in range(5):print(f'\r还剩{(4-i)}秒程序开始爬取商品', end='')time.sleep(1)print()# 开始爬取# time.sleep()了几次是因为adb命令传给手机有一个延迟,让手机有反应的时间for page in range(int(pages)):time.sleep(1)screen_shot()global countcount += 1if count < int(pages):time.sleep(2)swipe_screen()time.sleep(2)print(f'第{page+1}页爬取完毕')else:print(f'第{pages}页爬取完毕')breakprint('全部爬取完毕')print('下面开始解析数据')print('正在解析图片...')# 把需要的数据部分截取出来并保存到txt文件size = []price = []hour = []for i in range(count):img = Image.open(str(i)+'.png')# 前面两个坐标是截取的开始位置,后面两个坐标是截取的结束位置region = img.crop((170, 404, 720, 1280))region.save(str(i)+'t.png')with open(str(i)+'t.png', 'rb') as f:# 把图片转成ImageBase64base64_data = base64.b64encode(f.read())#下面开始解析图片try: cred = credential.Credential("这里写你自己的密钥", "这里写你自己的密钥") httpProfile = HttpProfile()httpProfile.endpoint = "ocr.tencentcloudapi.com"clientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = ocr_client.OcrClient(cred, "ap-shanghai", clientProfile) req = models.GeneralBasicOCRRequest()params = '{\"ImageBase64\":\"' + str(base64_data)[2:-1] + '\"}'req.from_json_string(params)resp = client.GeneralBasicOCR(req) date_needed = resp.to_json_string()regex = re.compile(r'"DetectedText": "(.+?)",')rst = re.findall(regex, date_needed)for temp in rst:if '刚刚' in temp or '分钟'in temp or '小时' in temp or '月' in temp:hour.append(temp)elif re.search('^[34][0-9].?', temp):size.append(temp)else:price.append(temp)print(f'第{i+1}页处理完毕')except TencentCloudSDKException as err: print(err)# 把输入写入excel文档print('开始整理数据...')# 下面开始把两个数据写入excel表格中# 创建excel# encoding='utf-8'是为了输出中文,style_compression=0表示不需要压缩book = xlwt.Workbook(style_compression=0)# 创建一个新的表格# cell_overwrite_ok表示是否可以覆盖单元格,默认为Falsesheet = book.add_sheet('result', cell_overwrite_ok=True)sheet.write(0, 0, '尺码')sheet.write(0, 1, '价格')sheet.write(0, 2, '时间')n = 1 # 定义第n行,为后面数据写入excel做准备if len(size) == len(price) == len(hour):print('数据无误,生成excel文件中...')for index in range(len(size)):sheet.write(n, 0, size[index])sheet.write(n, 1, price[index])sheet.write(n, 2, hour[index])n += 1book.save(u'result.xlsx') #Unicode字符串print('成功生成excel文档,再见!')else:print('errors happened')if __name__ == "__main__":main()

得物App购买记录数据爬取相关推荐

  1. qichacha/知乎/国家统计局最新4级地区划/百度地图API获取经纬度/Google play app评论等分数据爬取

    1.企查查数据抓取 1.1 关键公司LOGO # -*-coding:utf-8-*-import pandas as pd import requests import json import ra ...

  2. python手机端下载-Python3,x:如何进行手机APP的数据爬取

    Python3,x:如何进行手机APP的数据爬取 一.简介 平时我们的爬虫多是针对网页的,但是随着手机端APP应用数量的增多,相应的爬取需求也就越来越多,因此手机端APP的数据爬取对于一名爬虫工程师来 ...

  3. python怎样获得手机软件app数据_如何进行手机APP的数据爬取?

    平时我们的爬虫多是针对网页的,但是随着手机端APP应用数量的增多,相应的爬取需求也就越来越多,因此手机端APP的数据爬取对于一名爬虫工程师来说是一项必备的技能.我们知道,网页爬取的时候我经常使用F12 ...

  4. 24-移动端app数据爬取

    移动端数据爬取 安装fiddler 真机安装fiddler证书 修改手机代理(改成电脑ip,端口设置为fiddler的端口) 上述设置完成后我们就可以使用fiddler抓取手机端的数据了 夜神手机模拟 ...

  5. 手机app数据爬取难度等级评估

    一般来说网络数据爬取有两个来源,一个是网页,另一个是移动终端(手机app):随着移动终端的普及和推广,更多的用户甚至已经放弃了网页的访问,因此爬取移动端的数据更为合适. 但是,爬取移动端app数据具有 ...

  6. 结合Selenium 和 Requests完成动态数据爬取

    Selenium 简介 Selenium是一个用于Web应用程序测试的工具.Selenium测试直接调用操作浏览器,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),M ...

  7. Python之数据爬取数据可视化

    前言 临近中秋,月饼的销量持续增长,然而不仅仅是中秋节,非旺季也有很多月饼爱好者在电商平台购买月饼.本文利用淘宝上的公开数据,应用 python 对月饼非旺季的销售状况进行分析,并对统计结果进行数据可 ...

  8. 2019FME博客大赛——为数据而生的FME - 腾讯人口迁徙数据爬取与分析

    参赛单元:互联网.大数据及云计算 作者:刘啸 单位:上海垣观数据科技有限公司 随着信息技术的发展,大数据的概念越来越引发人们的关注,各种有关于城市的新数据类型也不断涌现,为客观认识城市系统并总结其发展 ...

  9. python爬虫的一次尝试——华北电力大学图书馆读者荐购系统:基于python爬虫的web数据爬取

    华北电力大学图书馆读者荐购系统数据爬取 前言 本章工具 网页分析 1.荐购数据 2.书目具体信息 代码部分 1. 荐购数据爬取 2. 完整书目信息爬取 前言 本学期数据仓库与数据挖掘课程大作业是编程实 ...

  10. 数据挖掘 文本分类 知乎问题单分类(二):爬取知乎某话题下的问题(数据爬取)

    数据挖掘 文本分类 知乎问题单分类(二):爬取知乎某话题下的问题(数据爬取) 爬虫目标 Scrapy框架介绍 Scrapy框架原理 [^1] Scrapy工作流程 [^2] 具体实现 安装Scrapy ...

最新文章

  1. C++ 编译器多态与运行时多态
  2. 《JavaScript 闯关记》之原型及原型链
  3. python数据处理高斯滤波_十大点云数据处理技术梳理
  4. 百斗度输入法linux,斗字输入法安卓版-斗字输入法app下载-最火软件站
  5. eureka服务下线方式
  6. HDU多校4 - 6989 Didn‘t I Say to Make My Abilities Average in the Next Life?!(单调栈)
  7. javascript --- [jsonp] script标签的妙用(绕过同源限制)
  8. Python 基础 - 4.3 random模块
  9. SGU 201 Non Absorbing DFA (DP)
  10. BZOJ 1011: [HNOI2008]遥远的行星( )
  11. 模式识别的几种基本算法
  12. 设计模式-GRASP V.S GoF
  13. GAN详解与PyTorch MINIST手写数字生成实战
  14. 谷歌地球看不了街景_谷歌街景车意外拍到的沙雕动物们……也是意想不到的快乐源泉啊!...
  15. UBUNTU 编译安装GEOS
  16. python将pdf转成excel_wpspdf转换成excel Python转换PPT为PDF
  17. 手机下拉框是怎么做出来
  18. 系统监控的四个黄金指标
  19. nodejs之setTimeout
  20. FTP服务器部署与优化+Received message too long报错

热门文章

  1. java根据业务排序利用Comparator.comparing自定义排序规则
  2. 802.1Q VLAN 简介
  3. ES 搜索19 (match 查询时权重提升)
  4. Android开发:vivo企业开发者账号注册
  5. AcWing120 防线
  6. flac格式歌曲如何转换成mp3格式,flac转mp3详细图文教程
  7. 我的 C# 学习经验分享
  8. 关于驱动程序与BSP的区别
  9. 随机森林(Random Forest)
  10. 回环接口(loop-back/loopback)