app之---豆果美食

1.抓包

  

 

2.代码

  抓取:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#author tom
import requests
from multiprocessing import Queue
from handle_pymongo import mongo
from concurrent.futures import ThreadPoolExecutorclass Douguo():def __init__(self):self.queue_list=Queue()#因为所有的请求的请求头都一样,所以放在这边处理,其实请求头也可以放在__init__def handle_request(self,url,data):headers={"client":"4","version":"6920.4","device":"SM-G9350","sdk":"22,5.1.1","imei":"861373280750547","channel":"qqkp",# "mac":"2c:c3:82:e2:0b:03","resolution":"1024*576","dpi":"1.19375",# "android-id":"4014041355524873",# "pseudo-id":"28075263","brand"    :"samsung","scale"    :"1.19375","timezone":"28800","language":"zh","cns":"3",# "imsi":"460005263415341","user-agent":"Mozilla/5.0 (Linux; Android 5.1.1; SM-G9350 Build/LMY48Z) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36","reach"    :"1","newbie":"1","Content-Type":"application/x-www-form-urlencoded; charset=utf-8","Accept-Encoding":"gzip, deflate",# "Cookie":"duid=59758072", #能不带最好不带"Host":"api.douguo.net",# "Content":"-Length    68","Connection":"keep-alive"}response = requests.post(url=url, headers=headers,data=data)return response#请求食谱首页def handle_index(self):url='http://api.douguo.net/recipe/flatcatalogs'data={"client":"4",# "_session":"1557318413116861373280750547",# "v":"1503650468","_vs": "2305"}response_index=self.handle_request(url,data)indext_response_dict=response_index.json()#遍历这个三级分类for index_item in indext_response_dict['result']['cs']:for items in index_item['cs']:for item in items['cs']:#每一个小分类data2={"client": "4",# "_session": "1557318413116861373280750547","keyword":item['name'],"order": "3","_vs": "400"}self.queue_list.put(data2)#请求具体食材的做法def handle_caipu_list(self,data):print("当前处理的食材是:",data['keyword'])#翻页for i in range(1,11):caipu_list_url='http://api.douguo.net/recipe/v2/search/{0}/20'.format(str(i*20))caipu_list_response=self.handle_request(url=caipu_list_url,data=data)caipu_list_dict=caipu_list_response.json()#判断是否有数据if caipu_list_dict['result']['end']==1:breakfor item in caipu_list_dict['result']['list']:caipu_info={}caipu_info['shicai'] = data['keyword']if item['type']==13:caipu_info['user_name']=item['r']['an']caipu_info['shicai_id']=item['r']['id']caipu_info['describe']=item['r']['cookstory'].replace('/n','').replace(' ','')caipu_info['caipu_name']=item['r']['n']caipu_info['zuoliao_list']=item['r']['major']# print(caipu_info)#获取详情页的内容detail_url='http://api.douguo.net/recipe/detail/'+str(caipu_info['shicai_id'])detail_data={"client": "4",# "_session": "1557318413116861373280750547","author_id": "0","_vs": "2803","_ext":'{"query": {"kw": '+caipu_info['shicai']+', "src": "2803", "idx": "1", "type": "13", "id": '+str(caipu_info['shicai_id'])+'}}'}detail_response=self.handle_request(url=detail_url,data=detail_data)detail_response_dict=detail_response.json()caipu_info['tips']=detail_response_dict['result']['recipe']['tips']caipu_info['cook_step']=detail_response_dict['result']['recipe']['cookstep']print('当前入库的是:',caipu_info['caipu_name'])mongo.inset_item(caipu_info)#g过滤掉广告else:continueif __name__ == '__main__':d=Douguo()d.handle_index()pool=ThreadPoolExecutor(max_workers=20)while d.queue_list.qsize()>0:pool.submit(d.handle_caipu_list,d.queue_list.get())

  存储:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#author tom
import  pymongoclass Connect_Mongo(object):def __init__(self):self.client=pymongo.MongoClient(host='127.0.0.1',port=27017)self.db=self.client['doukou_meishi']def inset_item(self,item):self.collection=self.db['meishi']self.collection.insert(item)mongo=Connect_Mongo()

 

转载于:https://www.cnblogs.com/tjp40922/p/10838919.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语言坐标度分秒的换算_测量位置度说明

测量位置度说明位置度是限制被测要素的实际位置对理想位置变动量的指标。它的定位尺寸为理论正确尺寸。位置度公差在评定实际要素位置的正确性, 是依据图样上给定的理想位置。位置度包括点的位置度、线的位置度和面的位置度。[1] 点的位置度:如公差带前加S¢&#xf…

OpenStack创建win7实例遇到的问题(尚未解决,求帮助)

原地址在这里:(作者也是我,害羞)http://www.aboutyun.com/forum.php?modviewthread&tid22898 小白经过两天尝试,用fuel部署好了OpenStack的云平台,接下来想在Compute节点上创建一个win7 实例&#xff…

VMware使两台windows虚拟机能够互相ping通

如果以下内容测试无效,可参考另一篇:VMware虚拟机配置内网电脑能访问 1.关闭防火墙 cmd命令行里输入:netsh firewall set opmode disable 2.测试如果还不能ping通,就把网络类型选nat类型 3.测试:vmware网关默认是.2 转…

linux账号前有个base,安装 aconda 后Linux的终端界面前部出现(base)字样

aconda 是做什么用的这里就不说了,一般玩Python的都知道这东西,最早接触这东西是因为它把NVIDIA中cuda计算和Python互连的一个库拿下了,是买下来了还是专业,还是唯一合作的也就记不清了,那就是 numba , 那些年头Python…

Spring 学习教程(一): 认识 Spring 框架

Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Control,控制反转) 和 AOP(Aspect Oriented Programming,面向切面编程)。 Spring 的框架结构 Data Access/Int…

小米网关控制空调伴侣_小米有品上架移动空调,支持语音控制

近日小米有品商城上架了一款互联网可移动空调,机身仅有小米空气净化器一般大小,底部安装了万向轮,支持多方位自由移动,拥有三大功能,兼顾去暑除湿能力,产品售价1599元,有需求的用户可以在小米有…

转载 JDK + Android-SDK + Python + MonkeyRunner 的安装

转载来自: 小海豚的博客 http://blog.sina.com.cn/u/1295334083 我只是搬运工。。。 JDK Android-SDK Python MonkeyRunner 的安装 1. Android-SDK介绍2. 安装 JDK, Android-SDK(包含MonkeyRunner) , Python 3. 设置环境变量4. 验证是否安装成功1. …

模块怎么用_Android 组件化/模块化 的理解!

作者:前行的乌龟到现在组件化真的不是什么新鲜东西了,大公司都用的滚瓜烂熟,龙飞凤舞了,也就是现在部分中型项目和小项目在组件化的路上努力。所以同志们,组件化没玩过的,不熟悉的赶紧搞起来,说…

和get redis_SpringBoot整合Redis,你get了吗?

Our-task介绍本篇博客是我github上our-task:一个完整的清单管理系统的配套教程文档,这是SpringBootVue开发的前后端分离清单管理工具,仿滴答清单。目前已部署在阿里云ECS上,可进行在线预览,随意使用(附详细…

树莓派 触摸屏_如何用树莓派搭建一个颗粒物(PM2.5)传感器

用树莓派、一个廉价的传感器和一个便宜的屏幕监测空气质量。-- Stephan Tetzel(作者)大约一年前,我写了一篇关于如何使用树莓派和廉价传感器测量 空气质量 的文章。我们这几年已在学校里和私下使用了这个项目。然而它有一个缺点:由于它基于无线/有线网&a…

matlab肌电信号平滑滤波_MATLAB图像处理:43:用高斯平滑滤波器处理图像

本示例说明了如何使用imgaussfilt来对图像应用不同的高斯平滑滤波器。高斯平滑滤波器通常用于降低噪声。将图像读入工作区。I imread(cameraman.tif);使用各向同性的高斯平滑核增加标准偏差来过滤图像。高斯滤波器通常是各向同性的,也就是说,它们在两个…

Github 简明教程 - 添加远程库

现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得…

分享AI有道干货 | 126 篇 AI 原创文章精选(ML、DL、资源、教程)

一年多来,公众号【AI有道】已经发布了 140 的原创文章了。内容涉及林轩田机器学习课程笔记、吴恩达 deeplearning.ai 课程笔记、机器学习、深度学习、笔试面试题、资源教程等等。值得一提的是每篇文章都是我用心整理的,编者一贯坚持使用通俗形象的语言给…

c语言qt生成dll与加载dll,Qt制作界面的DLL以及调用

1、将界面做成dll修改pro文件DEFINES WIDGETDLL_LIBRARYTEMPLATE lib修改头文件#if defined(WIDGETDLL_LIBRARY)# define WIDGETDLLSHARED_EXPORT Q_DECL_EXPORT#else# define WIDGETDLLSHARED_EXPORT Q_DECL_IMPORT#endifclass WIDGETDLLSHARED_EXPORT WidgetDll:public QWi…

20162329 张旭升 2017 - 2018 《程序设计与数据结构》第五周总结

20162329 2017-2018-1 《程序设计与数据结构》第五周学习总结 教材学习内容总结 1.学习目标 了解集合的概念了解并使用抽象数据类型初步了解使用Java泛型学习栈这种数据结构用数组、链表实现栈2.学习内容 集合的概念: 集合是手机并组织其他对象的对象,他…

centos 安装trace_前期的准备工作-MacOS Mojave 10.14.3 下安装CentOS 7及Bochs 002

MacOS Mojave 10.14.3 下使用虚拟机安装CentOS 7 以及 Bochs 2.6.9CentOS 7.6.1810 系统下 安装Bochs 2.6.91 下载CentOS 7.6.1810网址为https://www.centos.org/遇到的问题安装后无法使用使用网络,最简单的解决方法就是增加一个新的网络适配器,使用Nat共…

事件处理程序

转载于:https://www.cnblogs.com/ypx666/p/10869448.html

脉冲时间宽度c语言,基于AT89C52脉冲宽度测量仪的设计与实现

赵翠玉摘要:本文基于AT89C52的脉冲宽度测量仪的设计。该仪器测量结果采用了软件数字滤波,消除了测量中抖动问题,测量精度高、稳定性好,具有一定的实用性。关键词:AT89C52;测量仪;脉冲宽度中图分类号:TM935.…

[转载] mysql 索引中的USING BTREE 的意义

索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。 根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。 大多数…

【BZOJ1857】【SCOI2010】传送带 [三分]

传送带 Time Limit: 1 Sec Memory Limit: 64 MB[Submit][Status][Discuss]Description 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段。两条传送带分别为线段AB和线段CD。lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平…