charles+安卓模拟器采集豆果美食app
准备的东西
charles4.6.1,python, pycharm ,雷电模拟器安卓7.1.2 ,豆果美食apk,Postern 代理(没有这个无法在安卓7以上的app中 抓包)
分析api
打开charles,打开模拟器,打开postern代理,打开'豆-果'美食app程序,url过滤规则'douguo'
下面就是找包了, 找到之后,重发几次,测试一下 ,有没有数据,确认有没有反爬
发现没有什么问题,都有数据,而且 数据都是随机获取的,后续做一个去重就能保证数据的唯一性
分析详情页
# url = "https://api.douguo.net/recipe/v2/detail/3201333"url = f"https://api.douguo.net/recipe/v2/detail/{item['id']}"
发现直接替换id 就能直接相对应的详情页数据,那剩下来就是提取数据了。
在提取'推荐'页面的时候我们会发现,他推荐会有好几个type的数据
if res.get('state') == 'success':for item in res.get('result').get('list'):print(item)
我们需要清除一些,好找到 ['note'] 或者['r']
if res.get('state') == 'success':for item in res.get('result').get('list'):if not (item.get('dsp')): info_list = None if item.get('r'):info_list = item.get('r')if item.get('note'):info_list = item.get('note')
代码
# coding:utf-8
# @Author : AiNuo
# @File : douguo.py
import urllib3
urllib3.disable_warnings()
import requests,time,random
from pymongo import MongoClient
from time import sleep
def get_data():times = str(int(time.time()))headers = {# 多余不影响的就不放上来了,这两个参数给一个时间戳就好了"act-code": times,"act-timestamp": times,。。。。。。}cookies = {。。。。。。。。。。。。。。。。}url = "https://api.douguo.net/home/recommended/0/10"data = {。。。。。。。。。。。。。。。。。。。。。。}sleep((random.randint(5000,15000)/10000))response = requests.post(url, headers=headers, cookies=cookies, data=data,verify=False)res = response.json()response.close()# print(res)if res.get('state') == 'success':for item in res.get('result').get('list'):if not (item.get('dsp')): info_list = None # 先赋值为空if item.get('r'):info_list = item.get('r')if item.get('note'):info_list = item.get('note')# print(info_list)data={}data['id'] = info_list.get('id')data['name'] = info_list.get('n')data['img'] = info_list.get('img')print('首页',data)get_detail(data)def get_detail(item):times = str(int(time.time()))headers = {# 多余不影响的就不放上来了,这两个参数给一个时间戳就好了"act-code": times,"act-timestamp": times,}cookies = {。。。。。。。。。。。。}# url = "https://api.douguo.net/recipe/v2/detail/3201333"url = f"https://api.douguo.net/recipe/v2/detail/{item['id']}"data = {。。。。。。。。。}sleep((random.randint(5000,15000)/10000))response = requests.post(url, headers=headers, cookies=cookies, data=data)res = response.json()response.close()if res.get('state') == 'success':data = res.get('result').get('recipe')dict1={}dict1['id'] = data.get('cook_id')dict1['title'] = data.get('title')list1 = []for step in data.get('cookstep'):list1.append(step.get('content'))dict1['cookstep'] = list1print('详情页',dict1)save_mongoDB(dict1)def save_mongoDB(dict1):client = MongoClient()col = client['app']['douguo']if isinstance(dict1, dict):col.insert_one(dict1)else:return '单条数据必须是这种格式:{"name":"age"},你传入的是%s' % type(dict1)col.close()client.close()# 提取100组数据
for i in range(10):get_data()
结果:
charles+安卓模拟器采集豆果美食app相关推荐
- 豆果美食,把人们带回厨房
一.先从基本的煮饭做菜流程来剖析吧 [煮饭步骤] 1.做什么菜: 2.准备食材.作料: 3.开煮: 4.上菜: [根据煮饭步骤引申需求点] 1.怎么选--中国饮食文化的地域性差异非常明显,因此五千年的 ...
- 【附源码】计算机毕业设计Python安卓基于安卓的豆果美食APPou9ez(源码+程序+LW+调试部署)
[附源码]计算机毕业设计Python安卓基于安卓的豆果美食APPou9ez(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pytho ...
- app之---豆果美食
1.抓包 2.代码 抓取: #!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests from multipr ...
- Charles+安卓模拟器 抓取https请求
1.抓取https请求 如果模拟器不安装证书的话,我们可以抓取移动端的http请求了,但是https请求,会出现Unknown,下面是解决办法. 这里使用的是夜神模拟器(建议使用Android 5), ...
- HBuilder调试夜神安卓模拟器方法
HBuilder调试夜神安卓模拟器方法现在开发手机app的IDE很多,今天我就以我个人开发使用的HBuider开发工具讲一下手机app开发调试.HBuider支持真机调试,这个比较简单,只要安装好手机 ...
- android 黑马 模拟器,HBuilder调试夜神安卓模拟器方法
HBuilder调试夜神安卓模拟器方法 现在开发手机app的IDE很多,今天我就以我个人开发使用的HBuider开发工具讲一下手机app开发调试.HBuider支持真机调试,这个比较简单,只要安装好手 ...
- Fiddler / Charles - 夜神模拟器证书安装App抓包
Fiddler/Charles - 夜神模拟器证书安装App抓包 文章目录 Fiddler/Charles - 夜神模拟器证书安装App抓包 前言 一.软件安装 1.Openssl安装 1.1下载安装 ...
- 努比亚z17s刷原生安卓_电脑运行手机APP,不会没关系,我推荐你使用显卡服务器运行安卓模拟器...
很多人都想用电脑端运行手机APP,但是又不知道怎么操作.纵横170yun小编推荐大家使用显卡服务器,在显卡服务器上运行安卓模拟器.让你轻轻松松在电脑端运行手机APP,甚至还可以多开噢 .如果你的电脑没 ...
- Charles笔记-配置Charles代理抓取HTTP和HTTPS数据包,安卓模拟器连接Charles
这里要记住:雷电4是连不上的,有问题.我这里换成了逍遥7模拟器. Charles的版本是4.6.1 首先是代理配置: 把这2个都勾上: 然后是ssl的配置: 所有.com的443端口,都进行ssl 然 ...
- 为什么Android项目mainactivity中有一个变量R_安卓4:第一个安卓程序 AS 安卓项目结构解析 手机运行app 模拟器运行app...
学习于:https://www.bilibili.com/video/av22836860?p=2 首先,要知道AS的一个基本模型,1个Android project可以有多个module,而每个mo ...
最新文章
- Luogu P4916 魔力环
- 我知道真相,但我仍然勇往直前
- 软件工程——HelloWorld
- Linux 攻击防护基础排查
- EDSR dataloader.py代码问题
- 全国省市区数据SQL - 2017年数据(三级联动)
- 软件维护集成价格估算
- imagecropper php,cropper+php+ajax实现上传头像
- 离散数学 之 命题公式的主析取合取范式(java实现)
- 【LeetCode】233. 数字 1 的个数
- kubernetes完整学习笔记
- 《NEURAL READING COMPREHENSION AND BEYOND》解读(陈丹琦博士论文)
- algo_KNN(k-nearest neighbor)
- MYSQL笔试题(考试题)附带答案
- Calendar 获得当前日期是这一年的第几天
- 1.23 定语从句 感叹句
- 水生植物的Java莫斯
- html实现汉诺塔小游戏
- TCP/UDP/SOCKET/HTTP浅谈
- Spring:组成的七大模块
热门文章
- 习惯三:要事第一--自我管理的原则
- [转]一个IT人的辞职信:怀着梦想去远行!
- No such file or directory: ‘/tmp/tmpxxx/tmpxxx.py‘
- 统计学习方法详解之第十三章 无监督学习概论
- Ubuntu内核升级导致显卡冲突,升级显卡并禁用自动更新教程
- 【Gsutil】使用手册
- Freebase Data Dump 结构初探(二)——浅析元信息
- 关于jsp页面上无法显示图片的问题
- linux系统浏览器没有图片不显示,网页不显示图片怎么回事【解决方法】
- mysql-order by分页复杂排序条件替换union-limit(使用if和case when实现复杂排序)