准备的东西

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. 豆果美食,把人们带回厨房

    一.先从基本的煮饭做菜流程来剖析吧 [煮饭步骤] 1.做什么菜: 2.准备食材.作料: 3.开煮: 4.上菜: [根据煮饭步骤引申需求点] 1.怎么选--中国饮食文化的地域性差异非常明显,因此五千年的 ...

  2. 【附源码】计算机毕业设计Python安卓基于安卓的豆果美食APPou9ez(源码+程序+LW+调试部署)

    [附源码]计算机毕业设计Python安卓基于安卓的豆果美食APPou9ez(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pytho ...

  3. app之---豆果美食

    1.抓包 2.代码 抓取: #!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests from multipr ...

  4. Charles+安卓模拟器 抓取https请求

    1.抓取https请求 如果模拟器不安装证书的话,我们可以抓取移动端的http请求了,但是https请求,会出现Unknown,下面是解决办法. 这里使用的是夜神模拟器(建议使用Android 5), ...

  5. HBuilder调试夜神安卓模拟器方法

    HBuilder调试夜神安卓模拟器方法现在开发手机app的IDE很多,今天我就以我个人开发使用的HBuider开发工具讲一下手机app开发调试.HBuider支持真机调试,这个比较简单,只要安装好手机 ...

  6. android 黑马 模拟器,HBuilder调试夜神安卓模拟器方法

    HBuilder调试夜神安卓模拟器方法 现在开发手机app的IDE很多,今天我就以我个人开发使用的HBuider开发工具讲一下手机app开发调试.HBuider支持真机调试,这个比较简单,只要安装好手 ...

  7. Fiddler / Charles - 夜神模拟器证书安装App抓包

    Fiddler/Charles - 夜神模拟器证书安装App抓包 文章目录 Fiddler/Charles - 夜神模拟器证书安装App抓包 前言 一.软件安装 1.Openssl安装 1.1下载安装 ...

  8. 努比亚z17s刷原生安卓_电脑运行手机APP,不会没关系,我推荐你使用显卡服务器运行安卓模拟器...

    很多人都想用电脑端运行手机APP,但是又不知道怎么操作.纵横170yun小编推荐大家使用显卡服务器,在显卡服务器上运行安卓模拟器.让你轻轻松松在电脑端运行手机APP,甚至还可以多开噢 .如果你的电脑没 ...

  9. Charles笔记-配置Charles代理抓取HTTP和HTTPS数据包,安卓模拟器连接Charles

    这里要记住:雷电4是连不上的,有问题.我这里换成了逍遥7模拟器. Charles的版本是4.6.1 首先是代理配置: 把这2个都勾上: 然后是ssl的配置: 所有.com的443端口,都进行ssl 然 ...

  10. 为什么Android项目mainactivity中有一个变量R_安卓4:第一个安卓程序 AS 安卓项目结构解析 手机运行app 模拟器运行app...

    学习于:https://www.bilibili.com/video/av22836860?p=2 首先,要知道AS的一个基本模型,1个Android project可以有多个module,而每个mo ...

最新文章

  1. Luogu P4916 魔力环
  2. 我知道真相,但我仍然勇往直前
  3. 软件工程——HelloWorld
  4. Linux 攻击防护基础排查
  5. EDSR dataloader.py代码问题
  6. 全国省市区数据SQL - 2017年数据(三级联动)
  7. 软件维护集成价格估算
  8. imagecropper php,cropper+php+ajax实现上传头像
  9. 离散数学 之 命题公式的主析取合取范式(java实现)
  10. 【LeetCode】233. 数字 1 的个数
  11. kubernetes完整学习笔记
  12. 《NEURAL READING COMPREHENSION AND BEYOND》解读(陈丹琦博士论文)
  13. algo_KNN(k-nearest neighbor)
  14. MYSQL笔试题(考试题)附带答案
  15. Calendar 获得当前日期是这一年的第几天
  16. 1.23 定语从句 感叹句
  17. 水生植物的Java莫斯
  18. html实现汉诺塔小游戏
  19. TCP/UDP/SOCKET/HTTP浅谈
  20. Spring:组成的七大模块

热门文章

  1. 习惯三:要事第一--自我管理的原则
  2. [转]一个IT人的辞职信:怀着梦想去远行!
  3. No such file or directory: ‘/tmp/tmpxxx/tmpxxx.py‘
  4. 统计学习方法详解之第十三章 无监督学习概论
  5. Ubuntu内核升级导致显卡冲突,升级显卡并禁用自动更新教程
  6. 【Gsutil】使用手册
  7. Freebase Data Dump 结构初探(二)——浅析元信息
  8. 关于jsp页面上无法显示图片的问题
  9. linux系统浏览器没有图片不显示,网页不显示图片怎么回事【解决方法】
  10. mysql-order by分页复杂排序条件替换union-limit(使用if和case when实现复杂排序)