你好,我是悦创。
我将选取一个一款展示数据的 App 进行阐明,将会运用 Fiddler 抓包来剖析数据央求的接口,以及运用 Python 编写爬虫逻辑,究竟,把数据保存到 MongDB三次握手 里服务器地址在哪里看面去。
大众号原文:mp.weixin.qq.com/s/06eKx-X87…
1. 准备作业
在随从本教程开始之前,请确保你现已做完如下装备,以线程是什么意思下是我本文的操作环境:
- 设备好 Python电脑怎样截图 3.6+,我这儿运用JSON的是 Python 3.7,并确保能够正常作业;
- Python 编译器 Sub服务器租借lime(假定有设备或许现已有 Pycharm 能够越过准备作业;
- Python 爬虫常用库设备;
- 设备好抓包东西:Fiddler;
- 夜神模仿器设备;
- 设备 豆果美食 Ap三次握手图p,通过手机运用商铺设备时,服务器操作体系银河麒麟需求把署理关掉,比及需求在翻开署理;
- 课程资料(包括 APP)
1.1 Python 环境的设备
关于 Python 环境的设备,这儿能够我简略的编写一些:
- 下载办法
进入官网线程安全:w三次握手四次挥手详解ww.python.org
如图:
- 挑选上方 Downloads 选项
- 在弹出的选项框中挑选自己对应的体系(注:若直接点击右边的灰色按钮,将下载的是 32 位)
进入下载页面,json数据如图:
- 为 64 位文件下载
- 为 32 位文件下载
选服务器择您三次握手图对应的文件下载。
设备留神事项
(图片来历于网络)
自定义选项,三次握手能够挑选文件寄存方位等,使得 Python 更契合咱们的操作习气。
默许设备:一路 Next 究竟,设备更便利、更快json解析速。
可是,不管是默许设备仍是自定义设备,都需求你记住勾选上 Add Pyjsonthon线程池创立的四种 3.6 to Path
特别留神:图中箭头指向处一定要记住勾选上。否则得手动装备环境变量了哦。
Q:怎样装备环境变量呢?
R:操控面电脑怎样康复出厂设置板—体系与安全—系json解析统—高json字符串档体系设置—环境变量—体系变量—双击 p服务器装备ath—进入修改环境变量窗口后在空白处填入 Python 地址途径—一路供认。
检查
设备json数据完 Python 后,Win+R 翻开作业窗口输入 cmjsond,进入指令行方式,输入 python。若如下图闪现 Python 版本号及其他指令则标明 Python 设备成功。
1.2 Python 编译器 Sublime
官网:www.sublimetext.com/
挑选该修改器的原因:
- 不需求过多的编程基础,快速上手
- 发起作业速度快
- 最要害的原因——免费
常见问题
运用便利键 Ctrl+B 无json格局怎样翻开法作业作用,能够查验 Ctrl+Shift+P,在弹出的窗口中挑选 Bulid With: Python。
或挑选上方的 Tool 选项中的 Build With 选项,在弹出的窗口中挑选 Python。
1.3 爬虫常用库设备
Python 通过 pip install xxx
,来使得 Python 自三次握手进程动设备库。
这儿就直接作业如下指令即可:
pip3 install三次握手协议 -r https://www.aiyc.tjson字符串op/usr/uploads/2020/05/4258804948.txt
1线程的概念.4json数据 设备抓包东西:Fi线程撕裂者ddler
1.4.1 Fiddler 抓包软件介绍
1.4.1.1 前语
Fiddler是一个很好用的用 c# 编写的 HTTP 网络抓包东西,运用它的话,咱们就不用再阅览器的开发者东西里剖析页面了,能够在更加专业和智能化的 Fijson格局ddler 里边临页面参数进行央求调服务器是什么试。
咱们的 Fiddler 是一款 Web 调试署理途径,能够监控和修改 Web 数据流,本身是一款json文件是干什么的免费开源的不三次握手四次挥手详解管是开发人员仍是查验人员都能够帮忙用户检查数据流。
图一(图片来历网络-百度图片)
咱们能够看一下上图(图一)咱们的 Fiddlerjson格局 在咱们的用户(客户端)和 Web 服务器的中心,作为一个署理中心件存在,它能够捕获客户端主张的央求并电脑怎样康复出厂设置进行转发,服务器收到 F服务器装备iddler 转发的央求之后进行一个json文件是干什么的相应(response)Fiddler 再一次的三次握手四次挥手详解捕获到回来的数据,再一次的转发给客户端。经服务器过如上的描绘,咱们能够知道 Fiddler 在中心也便是个中心人那么咱们能够通过这个中心人来进行捕获一切的数据,并且进行电脑截图快捷键ctrl加什么修改,咱们抓取 APP 包的办法也是基于此原理的。
1.4.1.2 功用强健
- Fiddler 的功用十分强健,它支撑 IE、Chrome、Safari、Firefox 和 Opera 等JSON阅览器,针对这些阅览器,它能够更加具体的展示出标明层的数据是怎样传递的,展示出数据的格局,言语类型,传送办法缓存机制以及联接办法jsonp跨域原理等等。
- 能够在 iPhone、iPad 等移动设备上进行联接抓线程池创立的四种取。
关于 Fiddler 的优缺陷咱们要进行一些了解:
1. 利益json文件是干什么的
- 它的利益是能够查三次握手四次挥手详解看一切阅览器、客户端运用或服务器之间的 Web 数据流;
- 能够手动或自服务器体系动修改恣意的央求和照顾;
- 能够解密 HTTPS 数据流以便检查三次握手图和修改;
- 修改央求的数据,乃至电脑键盘功用基础知识能够完毕央求主动重定向,然后修改服务器回来的数据。
2. 缺陷
- Fiddler 只支撑 Http、Https、ftp、Websocket 数据流等相关的协议;
- 无法监测或服务器租借多少钱一年修改其他数据(也便是它不支撑的数据类型),如:SMTP、POP3 等;
- Fiddlerjson 无法处理央服务器体系求和照顾超过 2GB 的数据服务器。
1.4.2 Fiddler 软件下载
接下来,咱们来看一下 Fiddler 软件的下载和设备。咱们能够直接通过该地址:www.telerik.com/fiddlejson格局r 来拜访它服务器操作体系银河麒麟的下载界面,界面如下所示(图二):
图二
点之后,就会呈现如下界面(图三)需求咱们填写信jsonp跨域原理息,假定不知道 填什么,能够按我的图片填写即可,邮服务器租借多少钱一年箱填你自己的:
图三
点击之后他就会主动开始下载了。
1.4.3 Fiddler 设备
下载完毕之后,我就要进行设备了。设备起来也是服务器ip十分的简略,根柢上就一向点击下一步就能够了。这jsonp跨域原理儿要留神服务器怎样建立的是json文件是干什么的 Fiddl三次握手四次挥手面试题er 设备之后是不创立便利线程安全办法的,所以能够自定义设备途径便利你之后的查找和作业。当然在开始 傍边也是能够看见的。
为了便利同学们设备,我将 Fiddler 设备录成了视频,同学们能够点击下面联接进行观看电脑开不了机怎样办:
视频链接:www.aiyc.top/archives/44…
第一电脑截图快捷键次发起有或许会呈现如下信息(图四),点击否即可。
图四
正常作业的界面如下(图五):
[外链图片转存失利,源站或许有防盗链机制,主张将图片保存下来直接上传(img-LWzHZTrS-1600652136238)(豆果 APP 抓取.assets/8c6b服务器地址在哪里看b0f0-8b94-11ea-9776-f5261045ba7d)]
图五
至此,这儿就成功设备完毕了 Fiddler,
1.5 夜神模仿器设备
这儿夜神模仿器设备较为简略,为了操控文章长度,假定不会设备的能够参看该链接:www.aiyc.top/archives/49…
1.6 设备 豆果美食线程池创立的四种 App
具体设备能够参看如下链接:www.aiyc.top/arc电脑黑屏却开着机hives/服务器怎样建立50…
1.7 课电脑怎样康复出厂设置程资料(包括 APP)
点击该链接获取:gitee.com/aiycgit/Stu…
2. 发起 Fiddjson字符串ler 与装备模仿器署理
翻开 Fiddler 并设置仿服务器地址在哪里看照器里边手机署理,这一步的具体操作能够点击观看如下视频:
装备完毕之后,咱们的手机就要通过 Fiddler 来进行电脑开不了机怎样办抓包了,这也便是咱们往常所说的中心人。
2.1 Fiddler 弥补(Fiddler 装备与基础操作)
2.1.线程池创立的四种1 基础介json数据绍
Fiddler一旦发起就会主动开始作业,咱们此刻翻开阅览器随意点击几个页面就可看到 Fiddler 抓取了许多网络包。(图六-1)
图六-1
2.1.2 软件根柢界面
接下来咱们来进一步解析一些 Fiddler。
图六-2线程和进程的差异是什么
Fiddler 每个部分的称谓现已在上图(图六),最上面是咱们的东西栏,左面是咱们的会话列表,左下是指令行东西,右边 HTTP request(图上我 re服务器租借quest 多打了一个 s线程池创立的四种 抱歉),右下也便是 HTTP response。
- 左下角的 Captuing 是 Fi线程安全ddler 操控抓取的开关。
- 会话列表:也便是咱们抓到的数据json文件是干什么的都会在会话列表闪现;三次握手和四次挥手
- 指令行东西:咱们能够进行一些过滤等操作,咱们能够直接在指令里边输入
help
就会主动弹出一个页面,更多信息或许指令行指令能够从跳出的这个页面了解。 - HTTP request:也便是咱们 http 的央求信息,里边包括央求办法、http 协议、央求头(user-agent)等等;
- HTTP r线程池面试题esponse:也就服务器给咱们回来的信息;
咱们持续往下看这张图(图六-3):
图六-3
- [#] Request 次序
- [result] HTTP 状况码
- [protocol] 央求运用协议
- [Host] 央求地址域名
- [URL] 共同三次握手四次挥手详解资源定位符,央求的地址
- [Body] 央求大小 byte
- [Caching] 缓存操控
- [Context-Type] 央求照顾类型
- [Process] 发出央求的进程称谓
- [Co电脑黑屏却开着机mments] 用户增加的补白
- [Cu三次握手和四次挥手sto电脑键盘功用基础知识m]用户设置的自定义值
2.1.3 Fidd服务器租借ler 模仿场景jsonp
图六-4
在 Ruels 里边能够模仿各种场景:
- 央求之前进服务器地址在哪里看行登电脑截图快捷键陆验证;
- 对网页进行紧缩,查验功用;
- 模仿不同客户端的央求;
- 模仿不同网速不同状况,查验页面容错性;
- 禁用缓存,便利调试服务器租借服务器静态资源;
- Hide Image Request :躲藏图画央求(我一般翻开);
- Hide CONNECTs:把咱们的 TCP/IP 握手过滤掉,由于咱们不需求看它三次握手三次挥手(我一般翻开);
- Apply GZIP Encoding线程的概念:翻开页面紧缩,也便是说服务器不用一次性传输许大三次握手协议都据,就类似在电脑上紧缩文件来节省空间相同,目的是把页面紧缩以到达更好的功用;
2.1.4 检查央求内容
随意双击左面的一个网络包,右侧的 inspectors 里就能够检查央求内容,与阅览器开发者选项卡中的内容相同。jsonp(图七)
图七
2.1.5 关于HTTPS网站的信息咱们是无法检查的
我能够看到下面图的黄色提示(图八),别急接下来会讲到的。
图八
2.2 设置
那上面所说的一些根柢界面中的信息它不难,那服务器是什么难在哪里呢?
答:难在怎样进行一个设置
那接下来咱们来一JSON起设置一下咱们的 Fiddler 让它能够抓取咱们的阅览器数据的数据包,后边会给同学电脑蓝屏们阐明 App 的数据包。
2.2.1 设置抓取阅览器的数据包——H电脑键盘功用基础知识TTPS 选线程的概念项卡
接下来,我持续往下设置,也仍是在 Tools 里边的 Options ,咱们能够看到有许多的选项卡如下图(图八-2):
图八-json格局怎样翻开2
咱们不只要抓取 HTTP 的数据包,也还要抓取 HTTPS 的数据,相同手机 APP 上也是有 H三次握手具体进程TTP 和 HTTPS。所以这儿咱们需求它解密 HTTP三次握手四次挥手简述S 数据流量,这儿也趁便处理上面提到无法抓取 HTTPS 的问题。
所以,咱们能够三次握手进程通过假造 CA 证书来诈骗阅览器和服务器,然后完毕 HTTPS 解密,便是把 Fiddler 伪装成为一个 HTTPS 服务器,在真实的json格局 HTTP三次握手S 服务器面前 Fiddler 又伪装成阅览器(其实也便是在中心,不清json是什么意思楚的能够看上面的图一)。
咱们先点击东西栏中的 Tools,然后点击 Options,如下图(图九):
图九
接下来点开 HTTPS 选项卡,勾选 Dec服务器地址在哪里看rypt HTTPS 如三次握手办法用于下图所示(图json格局怎样翻开十)三次握手四次挥手简述:
图十
全三次握手四次挥手面试题部选是,之后再次拜访HTTPS网站就能够抓包检查了。上图(图十)的图十的提示便是咱们要设备一个 CA 证书,不过这个证书是 Fiddler 自己的证书,咱们选是即可,在这儿 Fiddljsonp跨域原理er 其实扮演的便是中心人侵犯。
图十一
虽然上面提到了,那为了让咱们更清楚,我这儿再提一下:咱们能够看上图(图十一) 了解一下,也便是咱们客户端发出去的央求会由咱们的 F电脑截图快捷键ctrl加什么iddler (中心人)来捕获,JSON由 Fiddler 的证书来进行解密,解密完毕之后再由 Fiddler 的证书进行加密然后三次握手协议转发到服务器上面。服务器再将所央求的数据回服务器装备来(加密过的),Fiddler服务器ip 接收到数据之后再进行解密,服务器体系解密完毕之后再发数据回来给客户端(明文数据)。这也便是咱们 Fiddler 在中心做的一个中心人操作。
我接下来能够看见,在 Decrypt HTTPS 下面还有一个选项,如下图(图十二):
图十二
这是电脑键盘功用基础知识让你挑选抓取的方针:
- …from all proc服务器地址在哪里看esses:抓取一切的进程;
- …from browsers only:仅抓取阅览器;(这儿为了便利小白入门避免抓取到其央求的信息,咱们先挑选“仅抓取阅览器json进程”)
- …from non-br电脑键盘功用基础知识owsers n线程oly:服务器操作体系银河麒麟抓取除阅览器进程之外的数据;
- …from remote clients only:仅抓取长途客户端;(当咱们抓取 App 数据端的时分,就能够挑选该选项)
究竟咱们在 HTTPS 选项卡中设置的究竟版如下图所示(图十三):
图十三
2.2.2 Connections 选项卡
接下来,咱们来设置一下 Connections 选项卡,点击电脑键盘功用基础知识 Connections 选项卡之后,界面如下(图十四):
图十四
这儿需求设置 Fiddler 设置端口号(Fiddler listens on port)线程撕裂者一般这儿的端口号都能够设置只要不是体系的端口号抵触即可。这儿,我线程池的七个参数一般设置成 8889,当然默许也是能够的。并且你也要勾选容许长途电脑进行联接(Allow remote computers to con电脑快捷键nect)假定你不勾选你的手机是连不到 Fidd线程池创立的四种ler三次握手图 的,也就电脑是说你的抓包东西是抓不到你手机上的数据包的。
当你点击(Allow remote computers to connect)的三次握手四次挥手详解时分,会弹出如下提示框(图十五):
图十五
点击供认即可,然后点击“ok”即可,操作如下动图(图十六):
图十六
截止这儿,就现已设置好了,我电脑怎样康复出厂设置们就能够抓取阅览器的数据服务器地址在哪里看了。
2.2.3 Fiddler抓包手机APP
首要需求点击Tools->options->Connections->Allow rem电脑开不了机怎样办ote computers to conn三次握手和四次挥手ect
设置好之后,需求翻开你的手机,在手机设置里json数据把手机的署理设置为电脑端的IP和端口,由于不同手机的设置环境不同,这儿需三次握手求你自行百度,假定咱们电脑地址为192.168.1.1,在手机装备好署理之后,翻开手机电脑蓝屏了怎样办修正阅览器,输入192.168.1.1:8888,会呈现如下界面
点击最下边的 F线程池创立的四种iddlerRoot centificate,下载并且设备证书。
究竟阅览手机 APP百度外卖,就可电脑快捷键以在电脑端抓包了。
2.3 简略操作 Fiddler
2.3.1 清空会话列表中的信息
办法有两种,第一种是下图的操作办法,先全选(Control + A)然后鼠标右键,挑选“rem三次握手进程ove”>>> “jsonpAll Sessions”即可。具体操作看下图(图十七):
图十七
第二种办法,直接上动图(图十八):
图十八
2.3.2 设置阅览器署理
上面咱们简略的装备了一下 Fiddlejson数据r 接下来需求装备一下咱们的阅览器,使咱们的阅览器通过署理来拜访互联网,那咱们应该怎样设置呢?
这儿咱们需求用到 Chrome 上的一个插件,称谓叫做:Proxy S线程池创立的四种w服务器是什么itchyOmega 这儿需求到谷歌运用商铺,链接:chrome.google.com/webstore/ca…,然后输入:Proxy SwitchyOmega 即可增加该扩展程序,但考虑到大部分人不支三次握手四次挥手简述撑“kx上网”这儿供应三个链接下JSON载:
操作视频:json是什么意思www.aiyc.top/archives/45…
推荐下载地址:www.aiyc.top/archiv三次握手办法用于es/45…
下载地址1:github.com/FelisCatus/…
下载地址2:proxy-switchyomega.com/download/
s随意挑选一个下载地址下载即json格局怎样翻开可,设备也很简略能够直接拖拽到阅览器即电脑开不了机怎样办可设备。一般设备成功后,都会呈现在下图方位(图十九):
[外链图片转存失利,源站或许有防盗链机制,主张将图片保存下来直接上传(img-DlFHJ4F线程池面试题7-16006三次握手具体进程52136255)(豆果 APP 抓取.assets/43869360-8c65-11ea-baea-1d374979c00e)]
图十九
点击上图的赤色方框里边的插件,就会呈现下图所示(图二十):
图电脑快捷键二十
点击”选项“之后就会呈现线程池如下页面(图二十一)线程池创立的四种:
图二十一
点三次握手和四次挥手面试题怎样答复击“新建情景方式”之后你会看见线程池如下界面(图二十二):
图二十二
装备信息可参看如下图片填写,然后点击创立即可(图二十三):
图二十三
点击创立之后服务器ip,你会看到如下界面(图二十四):
图二十四
接下来,咱们来进一步设置,署理协议挑选 HTTP
署理服务器填写 127.0.0.1
署理端口便是上面设置 Fiddler 时设置的端口,这儿我设置的是 8889
,所以填的也便是 8889
,下图现已给出(图二十五):三次握手办法用于
图二十五
记住修改完毕之后点击“运用选项”否则你这个三次握手协议情景方式是无法保存服务器体系的。接下来咱们就能够把阅览器改成 Fiddler 的情景方式,也便是说咱们能够通过 Fiddler 来抓取数据了。操作如下动图(图二十六):
图二十六
以上便是装备好了,不过这儿要留神的是,咱们装备完毕之后要从头发起一下 Fiddler 否则会闪现三次握手和四次挥手面试题怎样答复未联接到互联网如下图(图二十七):
图二十七
重启运用之后,咱们能够把 Fiddler 会话jsonp列表清空,然后拜访:www.aiyc.top/ 操作如下图(图二十八):
图二十八
从上面的操作能够看到json数据,咱们成功抓取到了数据,那怎样看里边的信息呢?
咱们直接点击相线程撕裂者应的数据即可,操作如下动图(图二十九):
图二JSON十九
上面咱们挑选 Inspectors
然后点击 Headers
咱们一般运用 Raw
检查,咱们还能够检查一下我网站回来的数据,操作如下动图(图三十线程是什么意思):
图三十
之后会给咱们阐明怎样设置抓取 App 的手机的数据包,那这儿还有一个要设置的,不过在讲怎样设置之前,咱们来看看为什么要设置,这儿咱们也是 先清空会话列表,央求百度网址,并检查回来的数据,操作如下动图(图三十一):
图三十一
咱们能够看见,给我回来的json文件是干什么的数据是乱码,如下图(图三十二):
图三十二
那该怎样处理呢?
办法一点击如下图方位的提示即可处理(图三十三):
图三十三
不过,办法一的话,每次遇见乱码都得再点以次,这样明服务器显不是咱们想要的,咱们能够再进行一步设置,如下图设置(图三十四):电脑键盘功用基础知识
图三十四
这样就能够处理了。
2.3.3 自定义央求发送
在右边的 Composer 选项卡中,咱们能够自定义央求,手动写电脑一个,也能够从左面的会话json字符串中拖拽一个以前。
咱们只需求编写简略的URL,当然还能够定制一些 user服务器地址在哪里看-agent
3. 抓取豆果美食 App
3.1 方针
- 剖析豆果美食数据包
- 通过 Pyt线程的几种状况hon 多线程-线程池抓取数据
- 通过运用署理 ip 躲藏爬虫
- 将数据保存到 Mongodb 中
翻开 Fiddler、翻开豆果美食,咱们需求抓取线程的几种状况豆果美食的菜电脑怎样康复出厂设置谱分类,
咱们能够操作时能够看见,线程池创立的四种你右边翻滚(向下翻滚/滑动),左面抓包的也在一向抓包,当然你能够自行挑选抓取其他的数据。这儿演示的只是:菜谱->蔬菜->马铃薯->学做最多;
接下来便是要剖析抓取到的这些数据包,看 有没有我能够央求且所需求的数据接口,以及供认是否服务器会给咱们相应的回来数据。
3.2 数据包剖析
通过上面的操作咱们能够获取的许多的数据包,接下来咱们就来剖析一下咱们锁需求的数据包,找这些数据包其实有一些规则,比方说咱们豆果美食,那它的数据必定是以三次握手四次挥手简述一个主站或许说主机头(主域名啥的),来进行央求的;
所以,咱们能够 Finde 一下,也能够 Control + F,当然也能够在菜单栏:Edit->FindSessions,操作之后,界面如下:
- Find:查找内容
- options:
- Search:设置查找(匹配规模)【Requests and response、Requests only、Response only、Url only】;
- Examine:检查;
- Match case:差异大小写;
- Regular Expression:正则表达式服务器和电脑主机的差异;
- Search binaries:查找二进制文件;
- Decode compressed content:解码紧缩内容;
- Search only selected sessions:只查找选定的会话;
- Select matches:挑选匹配;
- Unmark old results:吊销jsonp跨域原理符号旧的作用(比方第二次挑选,把上一次赛选的所符号的色彩吊销三次握手和四次挥手掉);
- Result Highlight:三次握手和四次挥手面试题怎样答复作用偏重(三次握手进程高亮);
咱们能够在 api.douguo.net
,怎样咱们就能够看见包括 api.douguo.net
的数据包都变成黄色三次握手图。
然后,我点击去一个找,找到如下:
可是会发现这个数据包其实是,属于悉数里边的数据包,并不是咱们要选的学做最多的。
我接下来持续电脑蓝屏了怎样办修正分三次握手具体进程析,看哪些是契合电脑怎样康复出厂设置咱们的数据包:
我在看看第二页,由于咱们原先翻滚(滑动了屏幕):
这样咱们就能够知道,该 App 是每页20条菜谱数据。
留神:假定你上面找到对应的 json 数据,却闪现形似不正常,这个时分运用阅览器或许其他东西进行 json电脑黑屏却开着机 格局化;
在线 Json 格局化网址:c.runoob.com/front-end/5电脑快捷键…
作用如下:
本来:
格局化之后:
究竟咱们就找到的数据jsonp跨域原理接口。
我把抓取到的数据导了出来,内容同学们能够点击该联接直接阅览:gitee.com/a线程的概念iycgit/Stu…
3.3 编写爬虫代码
3.3.1 结构央求头
编写 headers,这儿我三次握手四次挥手详解们把 fidd线程池面试题ler 抓取到数据中的 headers 构构成字典,运用正则表达式:
(.*?):(.*)
"$1":"$2",
在 sublime 傍边便利键:Control + H,运用其他修改器也是能够的,自行挑选。
编写完毕之后选 Replace All 即可:
"client":"4",
"version":"6962.2",线程的几种状况
"devi电脑快捷键ce":"MI 5",
"sdk":"22,5.1.1",
"channel":"qqkp线程撕裂者",
"resolution":jsonp"1电脑开不了机怎样办920*1080",
"display-resolution":"1920*1080",
"dpi":"2.0",
"andr服务器租借oid-id":"1f0189836f997940",
"pseudo-id":"9836f9979401f018三次握手四次挥手详解",
"brandjson数据":"Xiaomi",
"scale":"2.0",
"timezo三次握手协议ne":"28800",
"language":"zh",
"cns":"线程的几种状况2",
"carr线程池面试题ier":"CMCC",
"imsi":"460071940762499",
"User-Agent":"Mozilla/5jsonp跨域原理.0 (Linux; Andr三次握手四次挥手简述oid 5.1.1; MI 5 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36",
"act-code":"1588254561",
"act-timestamp":"1588254561",线程池创立的四种
"uuid":"0c57645电脑键盘功用基础知识6-a996-45c5-b351-f57431558133",
"battery-level":"0.97",
"battery-state":"3",
"macjson格局":"F0:18:98:36:F9:97",
"imei":"355757944762497",
"terms-accepted":"1",
"ne服务器体系wbie":"0",
"reach":"10000",
"Content-Type":"appli服务器地址在哪里看cation/x-www-form-urlencoded; charset=utf-8",
"Accept-E三次握手ncoding":"gzip, deflate",
"Connectijson解析on":"K服务器ipeep-Alive",
"Cookie":"duid=64268418",
"Host":"api.douguo.net",
"Content-Length":"179",
然后,便是要优化 headers 你要进行优化,那不是咱们线程自己觉得哪些是能够有可无的是需求咱们多抓取几服务器回数据包之后得出来的结论。
当然,还有便是不断地查验,注释与吊销注释,然后去央求看是否正常回来数据。
通过我地许多查验发现 imei 是不能去掉的,那这个 imei 是个什三次握手四次挥手详解么东西呢?
能够翻开咱们夜神模仿器的设置,咱们能够找到如下 imei 设置:
这个 imei 是随机生成的,咱们需求进行保留的;
咱们还能够看到 mac 地址,咱们也能够进行注释掉,以及这两个 android-id、pseudo-id 咱们也能够注释掉;
imsi 咱们也把它注释掉,以及 Cookie 也注释掉,由于你一向带着这个 Cookie 去拜访很简略被服务端检查并发现,假定这个 cookie 过时(失效了)这样也是拜访不到的,还有便是 Content-Length 能够注释掉;这样一个 headers 就假造完毕了,以上注释是我查验过的,假定还有能够注释掉或许其他能够在下方留言交流。
3.3.2 结构悉数栏目的 Data(index_data)JSON
复制出来并构构成字典即可。
3.3.2 剖析悉数栏目&编写爬虫
然后咱们需求编写央求,这儿要留神,署理咱们要在咱们央求之后再加上去,也便是查验服务器地址在哪里看成功之后再往上加署理,否则你有或许搞不清楚 是你署理除了问题仍是央求数据的时分呈现了问题,构成数电脑截图快捷键ctrl加什么据没有回来。
为了抓取蔬菜中的悉数数据,我要来剖析一下主页的数据,那就算要剖析主页的数据,所以也是要找到这个 API 接口的,
http://api.douguo.net/recipe/flatcatalogs
为什么是这个呢?
咱们把它的 json 拿出来看看:
从上面看,咱们能够得出结论,便是咱们需求的主页数据。
接下来便是编写代码了,究竟咱们编写如下代码:
"""
project = 'Code', file_name = 'Spider_douguo.py', author = 'AI悦创'
time = '2020/5/21 11:13', product_name = PyCharm,电脑怎样截图 大众号:AI悦创
code is far away from bugs with the god animal protecting
I love animals. They taste delicious.
"""
# 导入央求库
import json
import requests
from urllib import parse
from requests.exceptions import RequestException
# 剖析央求的类型:post;
# 剖析改动的线程的几种状况数据:url 改动;
# post 的 data 是不相同的;
# 剖析不变的服务器体系数据:header电脑键盘功用基础知识s 是不变的;
HEADER服务器操作体系银河麒麟S = {
"client":"4",
"version":"6962.2",
"device":"MI 5",
"sdk电脑怎样截图":json解析"22,5.1.1",
"channel":"qqkp",
"线程池的七个参数resolution":"1920*1080",
"display-resolution":"1920*1080"三次握手四次挥手详解,
"dpi":"2.0",
# "android-id":"1f0189836f997940",
# "pseudo-id":"98线程的几种状况36f9979401f018",
"brand":"Xiaomi",
"scale":"2.0",
"timezone":"28800",
"language":"zh",
"cn线程池创立的四种s":"2",
"carrier":"CMCC",
# "imsi":"46电脑蓝屏007194076服务器地址在哪里看2499",
"User-Agent":"Mozilla/5.0 (Linux; Andro服务器体系id 5.1.1; MI 5 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Saf线程和进程的差异是什么ari/537.36",
"act-code":"1588254561",
"act-timestamp":"1588254561",
"uuid":"0c576456-a996-45c5-b351json格局怎样翻开-f574315电脑快捷键58线程池面试题133",
"battery-level":"0.97",
"battery-state":"3",
# "mac":"F0:18:98:36:F9:97",
"imei":"355757944762497",
"ter三次握手和四次挥手面试题怎样答复ms-accepted":"1",
"newbie":"0",
"r线程池面试题each":"10000",
"Content-Type":"application/x-www-form-urlencoded; cha线程的概念rset=utf-8",
"Accep电脑截图快捷键ctrl加什么t-Encoding":"gzip, deflate",
"Connection":"Keep-Alive",
# "Cookie":"duid=64268418",
"Host":"api.douguo.net",
# "Content-Length":"179",
}
# print(parse.un线程池创立的四种quote('%E5%9C%9F%E8%B1%86'))
cl线程池的七个参数ass DouGuo_Crawler:
def __init__线程的几种状况(self):
self.heade三次握手四次挥手详解rs = HEADERS
# sejsonp跨域原理lf.url = DETAIL_API_URL线程的概念
self.index_data = {
"clienjson文件是干什么的t": "4",
# "_ses服务器操作体系银河麒麟sion":电脑截图快捷键 "1590028187496355757944762497",
# "v": "1590023768",# 时刻戳,也便是你央求数据的时刻
"_vs": "2305"服务器地址在哪里看,
"sign线程和进程的差异是什么_ran": "94b96c996a4a222540e435ee06ef133a",
"co服务器操作体系银河麒麟de": "b366f93caa7bac04",
}
def request(self, url服务器操作体系银河麒麟, data = None):
try:
r服务器是什么esponse = rjson数据equests.post(url = url, headers = self.headers, data = data)
if response.status_code == 2线程撕裂者00:
return response
return None
ex三次握手和四次挥手cept RequestExc服务器操作体系银河麒麟eption:
return None
def main(self):
url = 'http://api.douguo.net/recipe/flatcatal服务器体系ogs'
html = self.request(url = url, data = self.index电脑截图快捷键ctrl加什么_data)
print(html.text)
if __name__ == '__main__':
douguo = DouGuo_Crawler().电脑蓝屏了怎样办修正main()
作业作用三次握手协议:
{"state":"success","result":{"nv":"1590045372json是什么意思","cs":[{"n三次握手四次挥手简述ame":"u7电脑怎样截图0edu95e8","id":"1","ju":"recipes://www.douguo.com/search?key=u三次握手图70edu95e8&_vs=400","cs":[{"name"电脑怎样康复出厂设置:"u5bb6u5e38u83dc","id":"18","ju":"recipes://www.douguo.com/search?key=u5bb6u5e38u83dc&_vs=400","cs":[{"name":"u7ea2u70e7u8089","id":"三次握手协议58服务器79","ju":"recipes://www.douguo.com/search?key=u7ea2u70e7u8089&_vs=400","cs"json格局:[],"image_url":""},{"name":"u53efu4e50u9e21u7fc线程撕裂者5","id":"5880","ju":"rec线程池创立的四种ipes://www.douguo.com/search?key=u53efu4e50u9e21u7fc5&服务器装备;_vs=400","cs":[],"image_url":""},{服务器租借多少钱一年"name":"u7cd6u918bu6392u9aa8","ijsonpd":"5881","ju":"recipes://www.douguo服务器地址在哪里看.com/search?key=u7cd6u918bu6392u9aa8&_vs=400","cs":[],"image_url":三次握手协议""},{"name":"u9c7cu9999u8089u4e1d","id":"5882","ju":"服务器是什么recipes://www.douguo.com/search?key=u9c7cu9999u8089u4e1d&_vs=400","cs":[],"image_url":""},{"name":"u5babu4fddu9e21u4e01","id":json是什么意思"588电脑怎样康复出厂设置3","ju":"recipes://www.douguo.com/search?key=u5babu4三次握手fddu9e21u4服务器是什么e01&三次握手amp;_vs=400","cs":[],"ima三次握手协议ge_url":""},{"name":"u7ea2u70e7u6392u9aa8","id":"5884","ju":"recipes://www.douguo.com/search?key=u7ea2u70e服务器操作体系银河麒麟7u63jsonp跨域原理92u9aa8&_vs=400","cs":[],"image_url":""},{"name":"u54b8","id":"478","ju":"recipes://www.douguo.com/search?key=u54线程b8&_vs=400","cs":[],"image_url":""},{"na电脑黑屏却开着机me":"u81edu5473","id":"483","ju":"recipes://www.douguo.com/search?key=u81edu5473&_vs=400","cs":[],"image_url":""},{"name":"u82e6","id":"服务器体系479","ju":"recipes://www.douguo.com/search?key=u82e6&_vs=400","cs":[],"image_url":""},{"name":"u9c9c","id":"5878","ju":"recipes://www三次握手和四次挥手.douguo.com/user?id=23162809&tab=1","cs":[],"image线程池_url":""}],"image_url":""}三次握手四次挥手详解],"image_url":""}]jsonp,"ads":[{"dsp":{"id":"ad5671","pid":"6080244867596723","电脑怎样康复出厂设置ch":1,"url":"","三次握手i":"","cap":"jsonpu5e7fu544a","position":"1recipecategory","query":"","client_ip":""json格局怎样翻开,"req_min_i":60,"channel":"","media_typ电脑截图快捷键ctrl加什么e":0,"request_count":1,"max_impression_count":0,"name":"u840cu840cu54dJSON2u63a8u5e7fu5458","logojson数据":"http://i1.do电脑怎样康复出厂设置uguo.net/upload//p线程的概念hoto/2/1/1/70_2155服务器ip40a4a78ff05线程的概念84e3服务器操作体系银河麒麟f41d2de1json字符串a7191.jpg","us线程池创立的四种er":{"nick":"u840cu840cu54d2u63a8u5e7fu5458","user_photo":"电脑键盘功用基础知识http://i1.douguo.net/upload//photo/2/1/1/70_215540a4a78ff0584e3f41d2de1a7191.jpg","lvl":7,"user服务器装备_id"jsonp跨域原理:230107服务器ip54},"show":0,"ximage":"","can线程和进程的差异是什么close":0},"cid":"18"}]}}
输出作用过多,省掉部分作用,然后把获取到的作用用 json 格局化数据即可观看具体的三次握手协议数据内容。
3.3.3 对悉数栏目抓取到的 Json 进行解析
接下来,我就要抓取到的 json 进行数据解析,在解析之前咱们需求进行数据的剖析:咱们能够看见悉数的数据作用其实是在 r服务器和电脑主机的差异esult 里边的 cs 里边,如下图所示:
咱们折叠起来的之后,能够知道一共有 14电脑键盘功用基础知识 个栏目,而对应的 Json 也是 14,如下图:
这也便是咱们要遍历的数据,接下来咱们再来看看里边的结构:
那现在便是:res服务器装备ult->cs->cs->cs
,所以咱们现在的解析代码就能够写成如下:
import json
def parse_flatcatalogs(self, html):
"""
:param html: Parse target text
:return:
"""
json_content = json.loads(html)['resu线程池的七个参数lt'][服务器'cs']
for index_items in json_content:
for index_item in index_items['cs']:
for item in index_item['cs']:
print(item)
作业作用如下:
C:U服务器serscle线程撕裂者laAppDataLocalProgramsPythonPython37pyt电脑键盘功用基础知识hon.exe "C:/Code/pycharm_daima/实战项目代码/豆果 App/Spider_douguo.py"
{'name': '红烧肉', 'id': '5915', 'ju': 'recipes://www.douguo.com/search?key=红烧肉&_vs=400', 'cs': [], 'image_url': ''}
{'电脑怎样截图name': 'json可乐鸡翅', 'id': '5916', 'ju': 'recipes://www.do电脑开不了机怎样办uguo.com/search?key=可乐鸡翅&_vsjson格局=400', 'cs': [], 'image_url': ''}
{'name': '糖醋排骨', 'id': '5917', 'ju': 'recipes://www.douguo.com/search?key=糖醋排骨&_vs=400', 'cs': [], 'image_url': ''}
{'name': '鱼香肉丝', '服务器装备id': '5918', 'ju服务器是什么': 'recipes://www.douguo.com/search?key=鱼香肉丝&_vs=400', 'cs': [], 'image_url': ''}
{'name'电脑怎样截图: '宫保鸡丁', 'id': '59电脑快捷键19'三次握手和四次挥手面试题怎样答复, 'ju': 'recipes://www.dougu三次握手o.com/search?key=宫保鸡丁&_vs=400', 'cs': [], 'im线程池的七个参数age_url': ''}
{'name': '红烧排骨', 'id': '5920', 'ju': 'recipes://www.douguo.com/search?key=红烧排骨&_vs=400', 'cs': [], 'image_url': ''}
{'name': '怪味', 'id': '482json', 'ju': 'recipes://www.douguo.com/search?key=怪味&_vs=400', 'cs': [], 'image_url': ''}
{'name': '苦', 'id': '479', 'ju': 'recipes://www.d服务器操作体系银河麒麟ouguo.com/search?key=苦&_vs=400', 'cs': [线程池面试题],服务器装备 'image_url': ''}
{'name': '鲜', 'id': '5878', 'ju': 'recipes://www.d电脑快捷键ouguo.com/user?id=23162809&ta三次握手进程b=1', 'cs': [], 'image_url': ''}
输出作用过多,这儿省掉部分作用。
3.3.4 编写概略页的 Data
咱们接下电脑截图快捷键来要怎样操作呢?服务器操作体系银河麒麟
咱们接下来不便是为了获取每个概略页嘛,不过咱们仍是以最初的马铃薯来写,我仍是把抓取到的马铃薯的服务器怎样建立数据包复制出来剖析:
client=4&服务器怎样建立;_session=1590129789130355757944762497&keyword=%E5%9C%9F%E8%B1%86&order=0&_vs=11102&type=三次握手四次挥手详解0&auto_play_mode=2&sign_ran=c7d28e4120793b7687e6f13b0e0df1d8&am服务器ipp;code=9a4596275dd6d8c1
这儿,为什么只留 client 呢?其他的央求头其实前面现已剖析并结构好了,而 url 也没什么好剖析的,央求方式一看也就都知道 POST 央求,所以接下来咱们来剖析 client,我有电脑截图快捷键两种办法对上面的 clien服务器地址在哪里看t 除了一个是 Python 代码的办法,服务器租借如下:服务器怎样建立
from urllib import p线程池创立的四种arse
str_txt = 'client=4&_session=1590129789130355757944762497&keyword=%E5%9C%9F%E8%B1%86&or三次握手图der=0&_vs=11102&type=0&auto_play_mode=2线程池创立的四种&sign_ran=c7d28e4120793b7687e服务器地址在哪里看6f13b0e0df1d8&code=9a4596275dd6d8c1'
result = parse.unqu三次握手和四次挥手ote(str_txt)
print(result)
作业作用:
client=4&_session=15901297891303三次握手和四次挥手面试题怎样答复55757944762497&keyword=马铃薯&order=0&_vs=11102&type=0&auto_play_mode=2&sign_ra电脑蓝屏了怎样办修正n=c7d28e4120793b7687e6f13b0e0df1d8&code=9JSONa4电脑快捷键596275dd6d8c1
办法二运用 Fiddler 操作如下动图:
3.3.5 为什么不结构 url(api)呢?
这儿有同学会问了,为什么只看 client 而不可 url(api)呢?
这是由于,这个 api 是豆果或许其他 App 也类似,你找到这个托言之后,你传入的 data 数据不相同,它给你放回的数据也是不相同的,具体操作同电脑键盘功用基础知识学们能够换一个栏目然后进行抓包,比方我这儿挑选了:水产海鲜->基围虾:
然后挑选菜谱->学做多:
究竟,咱们滑动界面并抓包,抓包作用如下所示:
格局化都得作用:
这也便是为什么只看 client 的原因了,接下来咱们上面的电脑快捷键,我把解析之后的 client 构构成字典,上面现已演示过了,这儿就不做过多的演示。
3.3.6 结构 data 成字典
结构作用如下:
"client":"4",
# "_session":"159012服务器地址在哪里看9789130355757三次握手图944762497",
"keyword":"马铃薯",
"order":"0",
"_vs":"11102",
"type":"0",
"auto_play_mode":电脑怎样截图"2",
"sign_ran":"c7d28e4120793b7687e电脑6f13b0e0df1d8",
"co服务器ipde":"9a4596275dd6d8c1",
并编写如代码:
def __init__(self):
self.headers = HEADERS
# self.url = DETAIL_API_UR电脑蓝屏了怎样办修正L
self.index_data三次握手协议 = {
"client": "4",
# "_session": "1590028187496355757944762497",
# "v": "1590023768",# 时刻戳,也便是你央求数据的时刻
"_vs": "2305",
"sign_ran": "94b96c996a4a222540e435ee06ef133a",
"code": "b366f93caa7bac04",
}
self.detail_data = {
"clienjson解析t"电脑:"4",
# "_session三次握手图":"1590129789130355757944762线程497",
"keyword":"马铃薯",
"order":"0",
"_vs":"11102",
"type":"0",
"auto_play_mode":"2",
"sign三次握手办法用于_ran":"c7d2json解析8e4120793b7687e6f13b0e服务器是什么0df1d8",电脑截图快捷键
"code":"9a45电脑开不了机怎样办96275dd6d8服务器是什么c1",
}
咱们需求修改 self.detail_data
修改 keyword,当服务器和电脑主机的差异然上面的 data 假定能够再次进行优化,欢迎你点击阅览原文留言给我鸭,之后会出抖音等 App 爬虫。
所以,修改成如下代码:
self.detail_data三次握手和四次挥手面试题怎样答复 = {
"client":"4",
# "_s三次握手协议essi服务器租借多少钱一年on":"1590129789130355757944762497",
"keyword": None,
"order":"0",
"_vs":"11102",
"type":"0",
"auto_play_m线程是什么意思ode":"2",
"sign_ran":"c7d28e4json格局怎样翻开120793b7687e6f13b服务器体系0e0df1d8",
"code":"9a4596275d三次握手进程d6d8c1",
}
接下来也修改一下函数:pa电脑怎样截图rse_flatcatalogs
def parse_flatcatalogs(self, html):
"""
:param html: Parse target text
:rJSONeturn:
"""线程池面试题
json_content = json.loads(html)['result']['cs'服务器体系]
f电脑怎样截图or index_items in json_content:
for index电脑开不了机怎样办_item in index_items['cs线程和进程的差异是什么']:
for item in index_item['cs']:
self.detail_data['keyword'] = i三次握手四次挥手详解tem['name']
print(self.detail_data)
作业作用如下,作用过多,这儿省掉部分作用:
{'client': '4', 'keyword': '红烧肉', 'order': '0', '_vs': '11102', 'type': '0', 'auto_play_mode': '2', 'sign_ran': 'c7d28e4120793b7687e6f13b0e0df1d8', 'code': '9a4596275dd6d8cjson1'}
{'json文件是干什么的client': '4', 'keyword': '可乐鸡翅', 'order': '0', '_vs': '11102', 'type': '0', 'auto_play_mode': '2', 'sign_服务器装备ran': 'c7d28e4120793b7687e6f13b0e0df1d8', 'code': '9a4596275dd6d8c1线程池的七个参数'}
{'client': '三次握手四次挥手面试题4', 'keyword': '糖醋排骨', 'order': '0', '_vs': '11102', 'type': '三次握手协议0', 'auto_play_mode': '2', 'sign_ran': 'c7d28e4120793b76json解析87e6电脑怎样截图f13b0e0df1d8', 'code': '9a4596275dd6d8c1'}
{'client': '4', 'keyword': '鱼香肉丝', 'order': '0', '_vs': '11102', 'type': '0', 'auto_play_mode三次握手四次挥手简述': '2', 'sign_ran': 'c7d28e41电脑怎样康复出厂设置20793b7687e6f13b0e0df1d8', 'code': '9a4596275dd6d8c1'}
{'client': '4', 'keywor服务器租借多少钱一年d': '宫保鸡丁', 'order': '0', '_vs服务器怎样建立': '11102', 'type': '0', 'auto_play_mode': '2', 'sign_ran': 'c7电脑快捷键d28e4120793b7687e6电脑蓝屏了怎样办修正f13b0e0df1d8', 'code': '9a4596275dd6d8c1'}
3.3.7 结构部队电脑黑屏却开着机&提交数据到部队
咱们结构 data 成功了,接下来咱们需求的是运用多线程,所以,咱们就需json是什么意思求一个部队,所以这儿就需求引进如下库:
from multiprocessing电脑 import Queue
# 创立部队
queujson数据e_list = Queue()
这样,咱们的部队就创立成功了,那接下来咱们就能够把咱们的数据提交到我的部队傍边去,也便是咱们把咱们的 self.detail_data三次握手四次挥手简述
提交到,咱们的部队傍边,线程是什么意思代码如下:queue_list.put(self.detail_data)
def p线程的几种状况arse_flatcatalogs(self, html):
"""
:param html: Parse target text
:return:
"""
json_content = json.loads(html)['服务器result']['cs']
for index_ite三次握手四次挥手详解ms in json_content:
for inde三次握手四次挥手详解x_item in index_items['cs'jsonp]:
for item injson数据 index_item['cs']:
self.de线程和进程的差异是什么tail_data['k服务器怎样建立eyword'] = item['name']
# print(self.detail_data)
queue_list.put(self.detail_data)
print(queue_list.qsize()) # 检查部队中有多少线程的几种状况数据
3.3.三次握手办法用于8 获取菜谱列表
前面咱们获取到了各种食材,接下来便是要获取每一个食材的菜谱(做过最多),选取菜谱的 api,如三次握手进程下图:
recipe_api = 'http://api.dJSONouguo.net/recipe/v2/search/0/20' # 先拿前服务器装备 20 条数据进行查验
编写函数:
def th三次握手图e_recipe(self, data):
"""
抓取菜谱数据
:return:
"""线程池的七个参数
print(f"当时出处理的食材: {data['keyword']}")
recipe_api = 'http:三次握手和四次挥手//api.douguo.net/recipe/v2/search/0/20' # 先拿前 20 条电脑数据进行查验
response = sel线程池面试题f.request(url = recipe_api, data = data).text
# ret线程和进程的差异是什么urn re服务器地址在哪里看sponse
print(res线程池的七个参数ponse)
修改 main 函数进行修改查验:
def main(se线程安全lf):
# url = 'http://api.douguo.net/recipe/v2/search/0/20'
url = 'http://a电脑截图快捷键pi.douguo.net/recipe/flatcatalogs'
html = self.request(url = url, data = self.index_data).text
# print(html)
self.parse_flatcatalogs(html)
# print(queue_list.get())
self.the_recipe(data = queue_list.get())
查验作业作用,作用过多,展示部分作用:
当时出处理的食材: 可乐鸡翅
{"state":"success","result":{"sts":["u53efu4e50u9e21ujsonp7fc5"],"hidden_sorting_tags":0,"list":[{"ju":"recipes://www.douguo.co线程池创立的四种m/details?id=206667","type":13,"r":线程的概念{"stc":0,"sti":0,"an":"sttau5c0fu94ed","三次握手协议id":206667,"cookstory":"","n":"u53efu4e50u9e21u7fc5[u7b80u5355u5230u6ca1u4e0bu8fcjson解析7u53a8u4e5fu4f1au505a]","img":"htt服务器地址在哪里看ps://cp1.douguo.com/upload/caiku/8/json格局怎样翻开f/c/300_8f6d0f8电脑键盘功用基础知识b7195c0397c92fe39643761fc.jpg","dc":16948,"fc":3线程池创立的四种4462,"ec三次握手s":线程的概念1,"hq":0,"a":{"id":2042182,"n":"sttau5c0fu94ed服务器和电脑主机的差异","v":1,"verified服务器和电脑主机的差异_image":"","pr服务器装备ogress三次握手进程_image":"","p":"http://tx1.douguo.net/upload/photo/4/0/3/70_u49617908834149171436.jpg","lvl":6,"is_prime":false,"lv":电脑蓝屏0},"p":"https://cp1.douguo.com/upload线程池/caiku/8/f/c/600_8f6d0f8b7195c0397c92fe39643761fc.jpg","p_gif":"https://cp1.douguo.co线程池的七个参数m/upload/caiku/8/f/c/600_8f6d0f8b7195c0397c92fe39643761fc.jpg","cook_diffi线程池culty":"u5207u58a9(u521du7ea7)","cook_time":"10~30u5206u94服务器9f","tags":[{"t":"u665au9910"},{"t":"u5348u9910"},{"t":"u7092服务器租借多少钱一年u9505"},{"t":"u9505u5177"}jsonp跨域原理,{"t":"u70edu83dc"},{"t":"u54b8u751c"},
当然,咱们能够把该数据进行 Json 格局化,如下作用:
咱们把对应做服务器体系的最多的,可乐鸡翅拿来比照一下:
标明数据抓取正常,这儿咱们能够持续点进去看概略介绍,由于第一条没有概略介绍,这儿我点击第二天:
咱们再翻开第三个进行验证,不过我这儿第三个又是没有介绍的:
所以只能点击第四个看有没有有了,作用第四个也没有,到第五个有了,比照方下:
所以,能够知道咱们的央求是没有问题的,咱们接下来持续操作,也便是进行所获取到的数据进行解析,所需的数据好jsonp跨域原理像所示:
def the_recipe(self, data):
"""
抓取菜谱数据
:return:
"""
print(json文件是干什么的f"当时出处理的食材:线程安全 {data['线程安全keyword']}")
recipe_api服务器 = 'http://api.douguo.net/recipe/v2/searc线程池创立的四种h/0/20' # 先拿前 20 条数据进行查验
response = self.jsonprequest(url = recipe_api, data = da三次握手进程ta).text
# print(respons服务器租借多少钱一年e)
re服务器体系cipe_list = json.load三次握手和四次挥手面试题怎样答复s(response)['result']['list']
# print(type(recipe_list))
for item in recipe_list:
print(it电脑截图快捷键ctrl加什么e服务器和电脑主机的差异m)
作业作用电脑开不了机怎样办,数据较多,也是省掉部分数据:
当时出处理的食材: 地三鲜
'https://cp1.douguo.com/upload/caiku/5/0/4/600_50d4ffc003fd4b43449cb0d8ed902174.jpg', 'p_gif': 'https://服务器cp1.douguo.com/upload/caiku/5/0/4/600_50d4ffc003fd4b43449cb0d8ed902174.jpg', 'cook_diff电脑黑屏却开着机iculty': '切墩(初级)', 'co电脑截图快捷键ok_time': '10-30分钟', 'tags': [{'t': '东北菜'}, {'t': '炸'}, {'t':三次握手进程 '炒'}, {'t': '咸'JSON}, {'t': '下饭菜'}, {'t': '快手菜'}, {'t': '热菜'}, {'t': '素菜'}, {'t': '锅具'}, {'t': '炒锅'}, {'t': '午饭'}, {'t': '晚餐'}, {'t': '中国菜'}], 'vc': '15733890', 'recommend_label': '149json格局怎样翻开5人最近做过', 'displ三次握手进程ay_ing三次握手四次挥手面试题redient': 1, 'major': [{'note': '适量', 'title': '茄子'}, {'note': '一个', 'title': '马铃薯'}, {'note': '各一根', 'title': '青红椒'}, {'note': '适量', 'titl线程池创立的四种e'线程池创立的四种: '葱姜蒜'}], 'au': 'recipes://www.douguo.com/details?id=975713', 'pw': 799, 'ph': 450, 'rate': 4.7, 'recommendation_tag': '14线程池面试题95人做过'}}
{'ju': 'recipes://www.dougujson字符串o.com/details?id=1396536', 'type': 13, 'r': {'stc':服务器地址在哪里看 0, 'sti': 0, 'an'三次握手办法用于: '天边光年-爱线程池如初见', 'id': 1396536, 'cookstory': '这道地三鲜是我的拿手菜,想当初学这道菜的时分老公每天都试吃这菜,做了几回终于成功了。老json是什么意思公说再也不用吃不正宗的了,哈哈。这个滋味便是外面饭馆的滋味。',三次握手和四次挥手 'n'json格局: '地三鲜~在家也能做出饭馆的滋味', 'img':三次握手协议 'https://cp1.douguo.com/uploajson是什么意思d/caiku/7/1/5/300_71三次握手和四次挥手面试题怎样答复c899c8795448414aaf426aa910a335.jpg', 'dc': 784, 'fc': 84217, 'ecs': 0, 'hq': 0, 'a': {'id': 10146188, 'n': '天边光年-爱如初见', 'v': 1, 'verified_image': '', 'progress_image': '', 'p': 'http://tx1.douguo电脑怎样康复出厂设置.net/up线程池面试题load/json数据photo/1/0/线程的概念e/70_u3574750219030220248.jpg', 'lvl': 7电脑快捷键, 'is_p线程池的七个参数rime': False, 'lv': 0}, 'p': 'https://cp1.douguo.c三次握手和四次挥手面试题怎样答复om/upload/caiku/7/1/5/600_71线程池的七个参数c899c8795448414aaf426aa910a335.jpg', 'p_gif': 'https:/三次握手图/cp1.douguo.com/upload/c服务器体系aiku/7/1/5/600_71c899c8795448414aaf426aa910a服务器是什么335.jpg', 'cook_difficulty': '切墩(初级)', 'cook_time服务器操作体系银河麒麟': '10-30分钟', 'tags': [{'t': '咸鲜'}, {'t': '咸'}, {'t': '炒'}, {'jsont': '东北菜'}, {'t': '中国菜'}], 'vc': '2967774', 'rejsonp跨域原理commend_label'三次握手和四次挥手面试题怎样答复: '784人最近做过', 'display_ingredient': 1, 'major': [{服务器装备'note': '一个', 'title': '长茄子'}, {'note': '一个', 't三次握手四次挥手详解itle': '马铃薯'}, {'note': '一个', 'title': '青椒'}, {'note': '1/3个', 'title': '彩椒'}, {'note': '若干', 'title': '蒜'}, {'note': '两颗', 'title': '葱'}, {'njson格局ote': '适量', 'title': '花生油'}, {'note': '一勺', 'ti三次握手四次挥手详解tle': '生抽'}, {'not服务器和电脑主机的差异e': '1/3勺', 'title': '红烧酱油'}, {'note': '两勺', 'title': '淀粉'}, {'no电脑黑屏却开着机te': '半勺', 'title': '醋'}, {'note': '一勺', 'title': '白糖'}, {'njson文件是干什么的ote': '适量', 'title': '盐'}, {'note': '半碗', 'title': '清水'}], 'au': 'recipes://www.douguo.com/details?id=1396536', 'pw': 800, 'ph': 800, 'rate': 4.8, 'recomme三次握手图ndation_tag'电脑:三次握手四次挥手简述 '784人做过'}}
不过,咱们会发现有广告,那之后咱们能够把广告去掉。
接下来,把数据回来类型为字典,我还能剖析发现:type 为 13电脑蓝屏了怎样办修正 的时分,便是咱们所线程池的七个参数需求的菜谱,把需求的数据提取电脑怎样截图出来即可:
所以代码如下:
def the_recipe(self, data):
"""
抓电脑截图快捷键取菜谱数据
:return:
"""
print(f"当时出处理的食材: {data['keyword']}")
recipe_api = 'http://api.doug三次握手uo.net/recipe/v2/search/0/20' # 先拿前 20 条数据进行查验
response = self.request(url = recipe_api, data = data).text
# print(response)
rJSONecipe_list = json.loads(response)['result']['list']
# print(type(recipe_list))
for item in recipe_list:
# recipe_info :json 菜谱信息
recipe_info = {}
recipe_info['食材'] = data['keyword']
if item['type'] == 13:
recipe_info['user_name'] = item['r']['线程安全an线程池的七个参数'] # 用户称谓
recipe_info['recipe_i服务器租借多少钱一年d'] = item[json格局'r']['id']
recipe_info['cookstory'] = item['r']['cookstory'].stri线程的概念p()
recipe_info['recipe_name'] = item['r'json数据]['n']
recipe_info['major']json格局 = item['r']['major']
print(recipe_info)
els服务器操作体系银河麒麟e:
continue线程的几种状况
不过要留神的是,上面提取的 ID 通过我前期的剖析是食材的 ID,并不是用户的 id 而是菜谱的 id,那为什么要保留它呢?由于,后边我还需求央求一个 api 央求什么呢?
也便是我三次握手四次挥手面试题们现在服务器抓取到的数据,里边三次握手和四次挥手并没有 做法 ,同学们三次握手四次挥手详解自行比照哈。
那这个做法在哪呢?
也便是说,这儿还有一个数据包,咱们没有抓取到电脑快捷键,待会咱们再次央求做法的时分抓包看一下该做法的数据包时怎样的。所以,咱们需求先把这个 id 藏着。
3.3.9 抓包——recipe 烹线程池饪办法
接下来,咱们翻开咱们的 Fiddler 从头抓包,APjson格局怎样翻开P 里边直接停留在菜谱列表里边,直接进行抓包。究竟咱们抓取到线程安全了如下数据包:
标明这便是咱们需求的数据包:
3.3.9.1 结构烹饪办法 url
所以咱们接下来就来把这个央求编写成爬虫,咱们把 A服务器租借多少钱一年PI 复制出来:
http://api.douguo.net/recipe/detail/1091474
上面的 1091474 其实便是咱们保存的上面保存的 id,然后结构 url:
d服务器怎样建立etaile_jsonpcooks电脑开不了机怎样办tory_url = 'http://api.douguo.net/recipe/detail/{id}'线程和进程的差异是什么.format(id = recipe_info['recipe_id'])
3.3.9.2 结构烹饪办法的 data
那接下来咱们要结构一下 da线程和进程的差异是什么ta 的数据,也是把它复制下来,并进行解码:
# 解码之前
client=4&_sess电脑蓝屏了怎样办修正ion=1590191363409355757944762497&author_id=0&_vs=11101&_ext=%7B%22query%22%3A%7B%22kw%22%3A%22%E7%BA%A2%E7json格局怎样翻开%83%A三次握手四次挥手简述7%E8%82%89%22%2C%22sr服务器是什么c%22%3A%2211101%22%2C%22idx%22%3A%221%22%2C%22type%22%3A%2213%22%2C%22id%22%3A%221091474%22%7D%7D&am电脑黑屏却开着机p;is_new_user=1&sign_ran=fa68eee8c3458c196bd65c15c4b06c3b&code=e5cf0cdca6a10f39
# 解码之后
client=4&三次握手图amp;_ses线程撕裂者sion=1590191363409355757944762497&author_id=0&_vs=11101&_ext={"query":{"kw":"红烧服务器装备肉","src":"11101","idx":"1","type":"13","id":"1091474"}}&is_new_user=1&sign_ran=fa68eee8c3458c196bd65c15c4b06服务器地址在哪里看c3b&code=e5cf0cdca6a10f39
优化:
client=4线程池&_session=1590191363409355757944762497&author_id=0&_vs=11101&线程池面试题;_ext={"quer线程和进程的差异是什么y":{"kw":"红烧肉","sr线程池面试题c":"11101","idx":"1"线程的几种状况,"type":"13","id":"1091474"}}
也是构构成字典:
"client":"4",
"_session":"1590191363409355757944762497",
"author_id":"0",
"_vs":"11101",json格局
"_ext":"{"query服务器租借":{"kw":"红烧肉","src":"11101","idx":"1","tyjson解析pe":"13","id":"1091474"}}",
咱们还需求对上面的 "{"querJSONy":{"kw":"红烧肉","src":"11101","idx":"1","type":"13","id":"1091474"}}",
进优化,三次握手闪现的不正常:
也就语法错误,把双引号换成单引号即可,修改成电脑开不了机怎样办如下:
'{"query":{"kw":电脑开不了机怎样办"红烧肉","sr线程池创立的四种c":"11101","idx":"1","type":"13","id":"1091474"}}'电脑怎样截图
究竟咱们的 cookstory_data 如下:
cookstory_data = {
"clientjson格局": "4",
"_session": "15901913634服务器093线程撕裂者55757944762497",
"author_ijson解析d": "0",
"_vs": "11101"json格局怎样翻开,
"_ext": '{"query":{"kw":"红烧肉","src":"11101","idx":"1","type":"13","id":"1091474"}}',
}
而咱们的 session 不需求咱们能够注释掉,而咱们的 id 、kw 是不断改动的,其他的咱们不做改三次握手四次挥手详解变,由于你通过几回抓包就会知道,它其电脑怎样截图实是相同的。这儿为了满意懒散的小白,我随机挑选一道菜谱再次进行抓包。
3.3.9.线程池面试题3 比照 data 的不变json数据的数据
咱们三次握手协议再来看看三次握手它的数据:
# 解码之前:
client=4&_session=1590361734034355757944762497&author_id=0&_vs=11101&_ext=%7B%22query%22%3A%7B%22kw%22%3A电脑截图快捷键%22%E7%BA%B8%电脑键盘功用基础知识E6%9D%AF%Ejson字符串8%9B%8B%E7%B3%95%22%2C%22src%22%3A%2211101%2JSON2%2C%22三次握手四次挥手详解idx%22%3A%221%22%2C%22type%22%3A%2213%22%2C%22id%22%3A%221204922%22%7D%7D&is_new_user=1&sign_ran电脑开不了机怎样办=a866c电脑b568112ed9fd859fc2689fa0aaa&code=3ca60fe2ceb34663
# 解码之后:
client=4&_session=15903617340343557服务器装备57944762497&author_i三次握手和四次挥手d=0&_vs=11101&_ex电脑t={"qu线程是什么意思ery":{"kw":"纸杯蛋糕","src":"1三次握手进程1101","idx":"1","type":"13","id":"120492电脑截图快捷键ctrl加什么2"}}&is_new_user=1&sign_ran=a866cb568112ed电脑怎样截图9fd859fc2689fa0aaa&code=3ca60fe2ceb346jsonp跨域原理63
咱们来进行比照一下上面的红烧肉的数据:
# 红烧肉
client=4&_session=1590191363409355757944762497&author_id=0&_vs线程池面试题=11101&服务器ip_ext={"query":{"kw":"红烧肉","src":三次握手四次挥手面试题"11101","idx":"1电脑蓝屏了怎样办修正","type":"13","idjson字符串":"1091474"}}&is_new_user=1&s服务器租借ign_ran=fa68ee线程撕裂者e8c3458c196bd65c15c4b服务器租借多少钱一年06c3b&code=e5cf0cdca6a10f39
# 纸杯蛋糕
client=4&_session=159036json文件是干什么的1734034355757944762497&author_id=0&_vs=11101&_ext={"query":{"kw":"纸杯蛋糕","srcjson":"11101","idx":"1","type":"13","i线程撕裂者d":"1204922"}}&is_new_user=1&sign_ran=a86json格局6cb568112ed9fd859fc2689fa0ajson文件是干什么的aa&code=3ca60fe2ceb34663
能够,调查出确实是除了 kw、id 之外,s三次握手四次挥手面试题rc、type 等数据是不变的。
这个时分有同学或许会自己会在课下进行比照,发现 idx 这个数字有时分会不相同,我这儿先做答复:
答:或许豆果美食晋级后做了改动,抓包后,通过 python 去结构,注释掉一部分参数,也能够央求到数据,线程那么就不用去关心他变仍是不变了,或许你在央求时,1是A作用,2是B作用。(也通过我的查验现在 idx 不用修改数据也是准确的。
3.3.9.4 编写代码
def the_三次握手图recipe(self, data):
"""
抓取菜谱数据
:retur线程安全n:
"""
print(f"当时出处理的食材: {d三次握手协议ata['k线程eyword'三次握手四次挥手简述]}")
recipe_api = 'http://api.douguo.net/recipe/v2电脑截图快捷键ctrl加什么/search/服务器是什么0/20' # 先拿前 20 条数据进行查验
resJSONponse = self.request(url = recipe_api, data = data).text
#服务器体系 print(response)
recipe_list = json.loads(response)['result']['list']
# print(type(recipe电脑蓝屏了怎样办修正_list))
for item in recipe_list三次握手和四次挥手:
# recipe_info : 菜谱服务器是什么信息
recipe_info = {}
recipe_info['食材'] = data['keyword']
if item['电脑怎样截图type'] == 13:
recipe_info['user_name'] = item['r']['an'] # 用户称谓
recipe_info['recipe_id'] = item['r']['id']
r三次握手办法用于ecipe_info['c线程ookstory'] = item['r']['cookstory'].strip()
reci服务器ippe_info['recipe_name'] = item['r']['n']
recipe_info['major'] = item['r']['major']
# pri电脑快捷键nt(recipe_info)
detaile_cookstory_url = 'http://api.douguo.net/recipe/detail/{id}'.format(id = recipe_info['recipe_id'])
# print(detaile_cookstory_url)
cookstory_data = {
"client": "4",
# "_session": "1590191363409355757944762497",
"author_id": "0",
"_vs"线程的几种状况: "11101",
"_ext": '{"query":{"kw":"%s","src":"11101","idx":"1","type":"1线程安全3","id":"%s"}}'%(str(data服务器怎样建立['keyword']), str(recipe_info['recipe_id'])),
}
recipe_detail_resopnse = self.request(url = detaile_cookstory_url, d线程池创立的四种ata = cookstory_data).text
# print(recijson解析pe_detail_resopnse)
detaile_response_dict = json.loads(recipe_detail服务器地址在哪里看_rejson格局怎样翻开sopnse)
recipe_info['tips'] = detaile_response_dict线程撕裂者['result']['recipe']['tips']
recipe_info['cjson是什么意思ook_step'] = de电脑怎样康复出厂设置taile_response电脑_dict['result']['recipe']['cookstep']
logger.info(f'当时的 recipe_info:>>>{recipe_info}')
# logger.info('当时入库的数据')
else:
contin电脑截图快捷键ctrl加什么ue
作业作用如下,省掉部分作用:
当时出处理的食材: 可乐鸡翅
2020-05-25 16:45:07,613 - __m服务器ain__服务器装备 - INFO - 当时的 recipe_info:>>>{'食材': '可乐鸡翅', 'user_name': 'stta小铭', 'recipe_id':电脑键盘功用基础知识 206667, 'cookstory': '', 'recipe_name': '可乐鸡翅[简略到没下过厨也会做]', 'major': [{'note': '10个', 'title': '鸡翅'}, {'note': '一片', 'title': '姜'}, {'note': '两根', 'title': '葱'}, {'note': '一瓶易拉罐', 'ti电脑tle': '可乐'}, {'note': '三汤匙', 'jsontitle': '酱油(味极鲜)'}], 'tips': '鸡翅用刀子或许叉子扎扎更简略入味,有功夫的话能够提早腌制,腌制有条件的话加几滴柠檬汁有加分哦。不用加盐巴,腌制能够用料酒和酱油,酱油生抽老抽无所谓,腌制20分钟以上就能够。n--------------------------------------------------------n服务器和电脑主机的差异常见问题问答:nn问:放不放盐巴?n答:酱油里边含有盐分了。nn问:请问酱油是用生抽仍是老抽?n答:本文所用酱油为“味极鲜”nn问:鸡翅需求提早腌制吗?怎样腌?n答:少量三次握手四次挥手面试题酱油和料酒腌制就能够了。nn问:我腌制的时分放了酱油了,煮的时分还要放吗?n答:要!nn问:请问鸡翅需求焯水吗?n答:假定您的鸡翅中心是白色,三次握手和四次挥手面试题怎样答复没有赤色或许黑色血块,那能够不需求。反之则需求。nn问:不焯水不就很脏?n答:请三次握手四次挥手详解冲刷。nn问:请用问什么可乐好?n答:廉价的那个。nn---------------------------------------------------------------------n这道菜口味偏甜n假定您是云贵川、或许西部的朋友,您能够加点辣椒(请勿加花椒)jsonp跨域原理nn假定您是北方的朋友尤其是山东的朋友,200毫升的可乐请换成100毫升可乐+100毫升料酒n---------------------------------------------------------------------n慨叹一下nn今天根据自己的菜谱做了一次,果然好简略,菜谱的做法也没问题。nn发布菜谱到现在,好不简略从料理小白,到厨师,到西餐主电脑怎样截图厨,日料主厨。真的服务器装备喜爱做菜,有你们真好!有豆果真好!', 'cook_step': [{'position': '1', 'content': '锅底放点油爆香姜和葱白', 'thumb': 'https://cp1.douguo.cojsonp跨域原理m/uplo三次握手ad/caiku/f/6/1/140_f6ebfcafae6e4aa5b7f3e367f26b04b1.jpg', 'image_width': 640, 'image_height': 480, 'image': 'https://cp1json格局.douguo.com/upload/caiku/f/6/1/800_f6ebfcafae6e4aa5b7f3e367f26b04b1.jpg'线程安全}, {'position': '2', 'content': '放入鸡翅翻炒到发白,参与可乐和酱油,盖上锅盖', '电脑截图快捷键ctrl加什么thumb': 'https://cp三次握手和四次挥手1.douguo.com/upload/caikjson解析u/d/a/4/140_da0d38fa2c88线程的几种状况5b8e829d17b1dcbbbd34.jpg', 'image_width': 640, 'i服务器体系mage_height': 480, 'image': 'https://cp1.douguo.com/upload/caiku三次握手四次挥手详解/d/a/4/800_da0d38fa2c885b8e829d17b1dcbbbd34.jpg'}, {'position': '3', 'content': '中火煮到收汁就行', 'thumb': 'https://cp1.douguo.com/up线程池load服务器/caiku/1/b/3/140_1b122a5b97b867d9119caf2274e413c线程和进程的差异是什么3.j服务器租借pg', 'image_width线程的概念': 640, 'image_height': 480, 'image': 'https://cp1.dou线程池的七个参数guo.cojson格局怎样翻开m/upload/caiku/1/b/3/线程池的七个参数800_1b122a5b97b86电脑怎样截图7d9119caf2274e413c3.jpg'}]}
2020-05-25 16:三次握手进程45:12,295 - __main__ - INFO - 当时的 recipe_info:>>>{'食材'三次握手: '可乐三次握手进程鸡翅', 'user_name': '葉子的爱与厨房',线程和进程的差异是什么 'recipe_id': 201871, 'cookstory': '这道菜太电脑值得推荐了,别说孩子喜爱,白叟也会喜爱吃。并且十分合适减肥人士,由于一滴油都不需求放喔。我的外甥女第一次吃这鸡翅的时分,破天荒的吃了7个鸡翅,吓的我妈妈一向在喊:不能吃了不能吃了。还有我那3岁半的干儿子,挑食挑的头疼,可是吃了这个,电脑键盘功用基础知识连汤汁都服务器租借不放过,拌了一小碗米饭吃的干洁净净。 nn 所以,要是家里有个吃饭费力的孩子,就着手试试这个吧。在严寒的冬日,要是把它端上桌,不知有多适宜了。还真别轻视了它的魅力!这电脑截图快捷键ctrl加什么个真的比一般的可乐鸡翅好吃的多json格局!', 'recipe_name': '可乐鸡翅(无油加姜版)', 'major': [{'note': '400g', 'title': '鸡中翅'}, {'note': '15g', 'title': '姜'}, {'not线程的概念e': '1罐', 'title': '可乐'}, {'note': '半个', 'title': '柠檬'},电脑蓝屏了怎样办修正 {'note': '2勺', 'title': '生抽'}, {'note': '1勺', 'title': '老抽'}, {'note': '2g', 'title'json是什么意思: '糖(可不放)'}, {'note': '2g', 'title': '盐'}], 'tips': '1,鸡翅扎眼和切断都是为了让鸡翅更入味。 n2,用柠檬汁是为了去腥,也能更好的软化肉质。缩短煎的时刻。并且增加口味。作用十分好 n3,煎的时分正面先朝下。不过一定要不粘锅的锅喔。 n4,鸡翅会自己出许多油,所以千万不要再放油了。油是满意的。 n5,糖不要加多,由于可乐里糖分现已很重。怕甜的也能够不放糖三次握手四次挥手简述 n6,姜可JSON以斗胆多放些,由于可乐和姜的滋味一融合就会让你受宠若惊。 n7,撇掉锅里的泡沫,除了用勺子。也能够准备一json数据小张锡纸,用手捏皱,然后翻开放进去留神下。拿出来泡沫就 被吸在锡纸的褶皱里了,很简练的一种线程办法。 n8,中火能够多煮一下,这样能够更入味。然后大火收汁,可乐里含糖分,很服务器ip快会收干的。 n9,汤汁拌点电脑截图快捷键米饭,也特别好吃喔。', 'cook_step': [{'position': '1', 'content': '把鸡中翅洗洁净,沥水。或用厨房纸巾吸干水分,在鸡翅正面用叉子叉些眼(有鸡皮疙瘩的一面),在电脑鸡翅反面用小刀横切2道小口 n把姜切成姜丝3MM宽的姜丝。不要太细n鸡翅放进一个大碗里,然后用手捏柠檬,尽量挤出柠檬汁,拌匀,放置3--5分钟', 'thumb': 'https://cp1.douguo.com服务器是什么/upload/caik线程的几种状况u/b/f/b/140_bf8213a5b765c86f9acdbb6f09bc4f1b.jpg', 'image_width': 1600, 'image_height'json字符串: 1200, 'image': 'https://cp1.douguo.com/upload/caiku/b/f/b/800_bf8213a5b765c86f9acdbb6f09bc4f1b.jpg'}, {'position': '2', 'content': '拿不粘锅的平底锅,加热后,直接放入鸡翅,有鸡皮疙瘩的电脑怎样康复出厂设置一面先朝下', 'thumb': 'https://cp1.douguo.c电脑怎样康复出厂设置om/upload/caiku/9/1/2/140_91dca0da2408ee6a51e34600a36b9242.jpg', 'image_width': 800, 'image_height': 600, 'image': '服务器租借httjsonpps:电脑蓝屏//cp1.douguo.com/upload/caiku/9/1/2/800_91dca0da2408ee6a51e34600a36b9242.jpg线程和进程的差异是什么'},电脑开不了机怎样办 {'position': 'json字符串3', 'co电脑快捷键ntent': '出油后,翻面煎', 'thumb': 'https://cp1.douguo.com/upload/caiku/4/6/2/140_46b090e16b541d87597d893f14e021c2.jpg', 'image_width': 800, 'image_height': 600, 'image': 'https:三次握手//cp1.douguo.com/upload/caiku/4/6/2/800_46b090e16b541d87597d893f14e021c2.jpg'}, {'positio线程安全n': '4', 'content': '然后能够像我图中相同,尽量煎一下鸡翅的旁边面,待双面鸡翅油差不多都出来服务器,一向煎到双面金黄', 'thumb': 'https://cp线程池创立的四种1.douguo.com/upload/caiku/d/0/d/140_d0d236c86bd23dd50a099e1395397bbd.jpg', 'image_width': 800, 'image_height': 600, 'image': 'https://cp1.douguo.com/upload/caiku/d/0/d/800_d0d236c86bd23dd50a099e1395397bbd.jpg'}, {'positionjson是什么意思': '5', 'content': '放入切好的姜丝,和鸡翅一起翻炒一下,大约30秒', 'thumb': 'https://cp1.douguo.com/upload/caiku/2/9/7/140_297dadc823cf0fdd60fb93ac4c电脑怎样截图588线程的几种状况e97.jpg', 'image_width': 800, 'ima服务器体系ge_height': 600, 'image': 'https://cp1.douguo.com/upload/caiku/2/9/7/线程池面试题800_297dadc823cf0fdd60fb93ac4c588e97.jpg'}, {'position': '6', 'conte线程池创立的四种nt': '倒入可乐,刚刚和鸡翅相同平或略微没过鸡翅都可三次握手四次挥手面试题以。放盐,糖,生抽,老抽 。', 'thumb': 'https://cp1.douguo.com/upload/caiku/2/f/2/140_2f02fab255f69267708c2d37479d4922.jpg', 'image_wi服务器体系dth': 800, 'image_height': 600, 'image': 'https://cp1.d三次握手具体进程ouguo.com/upload/caiku线程和进程的差异是什么/2/f/2/800_2f02fab255f69267708c2d37479d4922.jpg'}, {'position': '7线程的概念',服务器是什么 'content': '撇掉锅里的泡沫', 'thumb': 'https:电脑蓝屏//cp1.douguo.com/upload/caiku/d/1/2/140_d11065f96e24b947ddcf6d0b4deb4752.jpg', 'image_width'服务器怎样建立: 800, 'image_height': 600, 'imajsonpge': 'https://cp1.douguo.com/upload/caiku/d/1/2/800_d1电脑蓝屏1065f96e24b947ddcf6d0b4deb475电脑截图快捷键ctrl加什么2.jpg'}, {'position': '8', 'content': '中火煮10分钟左右。然后大火收汁即可',电脑快捷键 'thumb'三次握手办法用于: 'https://cp1.douguo.com/upload/caiku/f/e/7/140_fe29798d线程安全4cd536b447f1aea295371c77.jpg', 'image_width': 670, 'image_height': 446, 'image三次握手和四次挥手': 'https://cp1.douguo.c三次握手四次挥手面试题om/upload/caiku/f/e/7/800_fe29798d4cd536b447f1aea295371c77.jpg'}]}
2020-05-25 16:45:13,519 - __ma三次握手和四次挥手in__ - INFO - 当时三次握手四次挥手面试题的 recipe_inf三次握手和四次挥手o:>>>{'食材': '可乐鸡三次握手图翅', '服务器怎样建立user_name': '拾光机', 'recipe_i线程池面试题d': 1070655, 'cookstory': '电脑蓝屏了怎样办修正良知确保,一个进程做出超好吃线程的概念可乐鸡翅!一个进程便是——翻开电线程池创立的四种饭锅,放进资料,按下烧饭电脑开不了机怎样办键!是不是很简略!资料用量也很很好把握,鸡翅按根来算,可乐买500毫升的小瓶装,连酱油、料酒和油都是用陶瓷汤匙来量电脑怎样截图取,我就不信还会有人做失利!', 'recipe_name': '电饭锅版可乐鸡翅', 'major': [{'note': '1小瓶(500ML)', 'title': '可乐'}, {'note': '8根', 'title': '鸡翅'}, {'note': '2汤匙', 'title': '酱油'}, {'note': '8片', 'title': '生姜'}, {'note': '1汤匙', 'title': '米酒或线程池创立的四种料酒'}, {'note': '1汤匙', 'title': '油'}], 'tips': '不用加盐,酱油带咸味了。用一般酱油就行。', 'cook_st电脑怎样截图ep': [{'posi电脑蓝屏了怎样办修正tion': '1', 'content': '鸡服务器翅洗净,生姜切片。', 'thumb'三次握手四次挥手简述: 'https://cp1.douguo.com/upload/caiku/8/5/9/140_85dc807a52611577json格局怎样翻开111a41f624c274f9.jpg', 'image_width': 2448, 'image_height': 3264, 'image': 'https://cp1.douguo.com/upload/caiku/8/5/9/800_85dc807a52611577111a41f624c274线程安全f9.jpg'}, {'position': '2', 'conte三次握手具体进程nt': '三次握手协议在电饭锅里倒入1汤匙食用油,放进姜片抹匀油。', 'thumb': 'https://cp1.dou电脑guo.com/upload/caiku/2/9/e/140_2984b75726ab83d613a8ec9三次握手具体进程bdc47c64e.jpg', 'image_width': 2448, 'image_height': 3264, 'image': 'https://cp1.douguo.com/upload/caiku/2/9/e/800_2984b75726ab83d613a8ec9bdc47c64e.jpg'}, {'po电脑黑屏却开着机sition': '3', 'content': '放进鸡翅。姜片要放在鸡翅底下,去腥,避免粘锅。', 't电脑怎样截图humb': 'https://cp1.douguo.com/upload/caiku/6/5/a/140_65581e3a3cf1c590e2456jsoncc0f8be6c5a线程安全.jpg', 'image_width': 2448, 'image_hei线程撕裂者ght': 3264, 'image': 'https://cp1.douguo.com/upload/caiku/6/5/a/800_65581e3a3cf1c590e2456cc0f8be6c5a.jpg'}, {'pos电脑键盘功用基础知识ition': '4', 'content': '参与1小瓶(500ml)可乐,确保可乐没过鸡翅。',json格局怎样翻开 'thumb': 'https://cp1.douguo.com/upload/caiku/4/d/6/140_4dbfef984db6d25341b969f92d3136d6.jpg电脑黑屏却开着机', 'image_width': 2448, 'imag电脑截图快捷键ctrl加什么e_height': 3264, 'image'电脑黑屏却开着机: 'https://cp1.douguo.c电脑截图快捷键ctrl加什么om/upload/ca电脑iku/4/d/6/800_4dbfef984db6d25341b9线程池面试题69f92d3136d6.jpg'}, {'position'电脑蓝屏: 'jsonp跨域原理5', 'content': '加2汤匙酱油,1汤匙料酒。', 'thumb': 'https://cp1.douguo.com/upload/caiku/1/5/e/140_156df43cd12523824965719c22d387be.jpg', 'image_width': 2448json格局怎样翻开, 'image_height': 3264, 'image':json是什么意思 'https://cp1.doug电脑uo.com/upload/caiku/1/5/e/800_156df43cd12523824965719c22d387be.jpg'}, {'position': '6', 'content': '按下电脑截图快捷键烧饭键。', 'thumbjson是什么意思': 'https://cp1.douguo.com/upload/caiku/3/0/a/140_302ee95370e83cecd8b0d93b797e07ca.jpg', 'image_width': 2448, 'image_height': 3264, 'image': 'https://cp1.douguo.com/upload/caiku电脑黑屏却开着机/3/0/a/800_302ee95370e83cecd8b0d93b797e07ca.jpg'}, {'position'三次握手四次挥手面试题: '7', 'content': '等电饭锅跳到保温档就好啦。', 'thumb': 'https://cp1.douguo.com/upload/caiku/8/4/5/140_847fjson是什么意思877dddb78电脑怎样康复出厂设置59e7f0d2d221f923095.jpg', 'image_widtjsonp跨域原理h': 2448, 'image_height': 3264, 'im服务器怎样建立age': 'https://cp1.douguo.com/upload服务器是什么/caiku/8/4/5/800_847f877dddb7859e7f0d2d线程池面试题221f923095json.jpg'}, {'position': '8', 'content': '对了,喜爱吃辣的能够加电脑怎样康复出厂设置干辣椒,加几粒大蒜滋味也不错。', 'thumb': 'https://cp1.douguo.com/upload/caiku/d/2/3/140_d20df3ba8675ff5339a0b2af547574b3.jpg', 'image_width': 3456, 'image_height': 5184, 'image': 'https://jsonp跨域原理cp1.douguo.com/upload/caiku/d/2/3/800_d20df3ba8675ff5339a0b2af547574b3.jpg'}]}
咱们能够把输出的数据转换成 json 便利阅览,代码如下:
json_recipe_iinfo = json.dumps(recipe_info)
logger.infojson是什么意思(f'当时的 recipe_info:电脑怎样截图>>&电脑键盘功用基础知识gt;{json_recipe_iinfo}')
3.3.10 数据入库逻辑编写
那到现在,咱们还需求进行数据的入库,ip 躲藏,当然还有多线程咱们还没有完毕。这儿咱们需求导入这样的一个库:
impor线程撕裂者t pymongo
不过这儿,咱们会挑选把存储数据的代码放入到单独的一个代码文件,这儿我在项目目录下创立一个 d三次握手进程b.py线程池创立的四种 的文件。
假定,你对 Python 操作 MongoDB 不了解的话,可电脑蓝屏了怎样办修正以参看如下链接:wwjson格局w.aiyc.top/arch电脑黑屏却开着机ives/51…
数据库代码如下:
"""
project = 'Code', file_name = 'db.py', author = 'AI服务器ip悦创'
time = '2020/5/26jsonp 7:25', product_name = PyCharm, 大众号:AI悦创
code is far away from bugs with the god animal protecting
I love animals. Theyjson解析 taste线程的几种状况 delicious.
"""
import pymongo
from pymongo.collection import Collect电脑怎样截图ion
class Connect_mongo(object):
def __init__(self):
self.client = pymongo.MongoClient(host='loc服务器地址在哪里看alhost', port=27017)
self.db = self.cl三次握手ient['dou_guo_meishi_app'] # 指定数据库
def insert_item(self, item):
db_collection = Collection(self.db, 'dou_guo_mei服务器是什么_服务器地址在哪里看shi_item') #线程和进程的差异是什么 创立表(调线程安全集)
# db_collection = self.db.do三次握手四次挥手面试题u_guo_mei_sh三次握手办法用于i_item
db_collection服务器装备.insert_one(item)
mongo_info服务器操作体系银河麒麟 = Connect_mongo()
咱们还在 Spider_dougu线程池o.py 增加了如下代码:
from db import mongo_info
def the_recip服务器和电脑主机的差异e(sel三次握手协议f, data):
"""
抓取菜谱数据
:return:
"""
# print(f"当时出三次握手和四次挥手面试题怎样答复处理的食材: {data['keyjson是什么意思word']}")
recipe_api = 'http://api.douguo.net/recipe/v2/search/0/20' # 先拿前 20 条数据进行查验
response = self.request(url = recipe_api, data = d电脑ata).text
# print(respons线程池e)
recipe_list = json.loads(rjson字符串esponse)['result'][服务器ip'list']
# print(type(recipe_list))
for item in recipe_list:
# recipe_info : 菜谱信息
recipe_info = {}
recipe_info['食材'] = data['keyword']
if item['type'] == 13:电脑蓝屏
recipe_i线程池nfo['user_name'] = item['r']['an'] # 用户称谓
recipe_info['recipe_i线程是什么意思d'] = item['r']['id']
recipe_info[json字符串'cookstory'] =三次握手四次挥手简述 item['r']['线程池面试题cookstory'].strip()
recipe_info['recipe_name'] = item['r']['n'服务器地址在哪里看]
recipe_info['major'] =电脑 item['r']['major']
# print(recipe_info)
detail线程池e_cookstory_url = 'http://api.douguo.net/recipe/detail/{id}'.format(id = recipe_info['三次握手和四次挥手面试题怎样答复recipe_id'])
# print(detaile_cookstory_ujson是什么意思rl)
cookstory_data = {
"client": "4",
# "_session": "15901913634三次握手办法用于09355757944762497",
"author_id": "0",
"_vs": "11101",
"_ext": '{"quejson是什么意思ry":{"kw":"%s","src":"11101","id线程池创立的四种x":电脑"1","type":"13","id":"%s"}}'%(str(data['keyword']), str(r线程池创立的四种ecipe_info['recipe_id'])),
}
recipe_detail_resopnse = self.request(url = detaile_cookstory_url, datjson格局怎样翻开a = cookstory_data).text
# print(recipe_detail_resopnse)
detai线程池创立的四种le服务器操作体系银河麒麟_response_dict = json.loads(recipe_detail_resopnse)
recipe_inf电脑怎样截图o['tips'] = de线程和进程的差异是什么taile_response_dict['result']['recipe']['tips']
recipe_info['cook_step'] = detaile_response_dict['result']['recipe']['cookstep']
# json_recipe_iinfo = json.dumps(recipe_info)
# logger.info(f'当时的 recipe_info:>>>{json_recipe_iinfo}')
logger.info(f"当时入库的菜谱是:>>三次握手四次挥手详解;>{r服务器是什么ecipe_info['recipe_name']}")
mo线程安全ngo_i电脑开不了机怎样办nfo.insejson文件是干什么的rt_item(recipe_info)
else:
con服务器租借tinue
作业代码之后,咱们能够检查数据三次握手具体进程库中的数据:
3.3.11 多线程逻辑编写
这儿我只是演示了前20条菜谱,同学们能够自行结构 url,接下来咱们就能够编写多线程,这儿咱们需服务器租借多少钱一年求导入如下库:
from concur线程安全rent.futures import ThreadPoolExecutorjson字符串
main 函数的代码如下线程池面试题:
def main(self):
# url = 'http://api.douguo.net/reci三次握手四次挥手简述pe/v2/search/0/20'
url = 'http://api.douguo.net/recipe/flatcatalogs'
html = self.request(url = url, data = self.index_data).text
# print(html)
self.parse_flatcatalogs(html)服务器ip
# print(queue_list.qsize())
# for _ in range(queue_list.qsize()):
# data = queue_list.get()
with ThreadPoolExecutor(max_worker线程撕裂者s=20) as thread:
while queue_list.qsize() > 0:
thread.submit(sel线程是什么意思f.the_recipe, qjsonp跨域原理ueue_list.三次握手进程get()三次握手进程)
作业之后,就能够看到抓取到的数据:
3.3.12 IP 躲藏
IP 躲藏的目的以及作用,我这儿就不做赘述了。这儿,我创立一个查验文件,来查验咱们的署理是否有用,这儿我运用的是 【阿布云署理】:www.abuyun.com/ ,同学们能够自行挑选,假定对署理的运用不清三次握手办法用于楚的话,能够点击此链接阅览:mp.weixin.qq.com/s/eAsFO7u0zJSON…
▌运用付费署理
上面,咱们只运用了一个署理,而在爬虫中往往需求运用多个署理,那有怎样结构呢,这儿首要两种办法:
- 一种是jsonp跨域原理运用免费的多个 IP;
- 一种是运用付费的 IP 署理;
免费的 IP 往往作用欠好,那么能够建立 IP 署理池,但对新手来说搞一个 IP 署理池本钱太高,假定只是个人往常玩玩爬虫,完全能够考虑付费 IP,几块钱买个几小时动态 IP,大都状况下都满意爬一个网站了。
这儿推荐一个付费署理「阿布云署理」,作用好也不贵,服务器体系假定你不想费力地去搞 IP 署理池,那不妨线程撕裂者花几块钱轻松处理。
初度运用的话,能够挑选购买一个小时的动态版试用下,点击生成地道署理信息作为凭证参与到代码中。
将信jsonp息复制到官方供应的 Re三次握手办法用于quests 代码中,作业来检查一下署理 IP 的作用:
www.abuyun.com/http-proxy/…
import requests
# 待查验方针网页
targetUrl = "http://icanhazip.com"
def get_pjson解析roxies():
# 署理服务器
proxyHost = "http-dyn.abuyun.com"
proxyPort = "9020"
# 署理地道验证信息
prjson字符串oxyUser = "H8147158822SW三次握手进程5CD"
proxyPass = "CBE9D1D21DC94189"
prox线程池yMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
"host" : proxyHost,
"port" : proxy电脑快捷键Port,
"user" : proxyUser,线程撕裂者
"pass" : proxyPass,
}
proxies = {
"http" : proxyMeta,
"htt三次握手和四次挥手面试题怎样答复ps" : proxyMeta,
}
for i in range(1,6):
resp线程是什么意思 = requests.线程是什么意思get(targetUrl, proxies=pro线程安全xies)
# print(resp.status电脑蓝屏_code)
print('第%三次握手四次挥手简述s次央求的Ijson字符串P为:%s'%(电脑截图快捷键i,resp.text)三次握手具体进程)
get_proxies()
能够看到每次央求都会运用不同的 IP,是不是很简略?比搞 IP 署理池省事多了。
第1次央求的IP为:125电脑蓝屏了怎样办修正.117.线程的概念134.158
第2次央求的IP为:49.71.117.45
第3次央求的IP为:112.244.117.94
第电脑键盘功用基础知识4次线程撕裂者央求的IP为服务器操作体系银河麒麟:122.239.164.35
第5次央求的IP为:125.106.147.24
[Finished in 2.8s]
当然,还可电脑黑屏却开着机以这样设置:
"""
project = 'Code', file_name = 'lession', author = 'AI悦创'
time = '2020/5/26 10:36', product_na服务器体系me = PyCharm, 大众号:AI悦创
code is far away from bugs with the god animal protectinjsonpg
I love animals. They t服务器地址在哪里看aste delicious.
""线程池面试题"
import三次握手协议 requests
# 112.48.28.233
url = 'ht线程池面试题tp://icanhazi线程池p.com'
# 下面的 try:......except:......是一个防错机制
# username:password@署理服务器ip地址:p服务器iport
p三次握手办法用于roxy =JSON {'http':'http://H线程池8147158822SW5CD:CBE9D1D21服务器操作体系银河麒麟DC94189@http-dyn.abuyun.com:9020'}
try:线程的概念
response = requests.get(url, proxies = proxy)
print(response.status_code)
if response.status_code == 200:
print(response.text)
except requests.ConnectionError as e:
# 假定报错,则输出报错信息
print(e.args)
以上,介绍了 Requests 中设置署理 IP 的办法。
▌没用署理之前
import电脑截图快捷键 requests
url = 'http://icanhazip.com'
# 下面的 try:......except:.服务器怎样建立.....是一个防错机制
try:
response = requests.g线程的几种状况et(url) #不运用署理
print(response.status_code)
if r电脑截图快捷键esponse.status_code == 2三次握手四次挥手详解00:
print(response.text)
except线程是什么意思 requests.ConnectionError as e:
# 假定报错,则输出报错信息
print(e.args)
输出作用:
200
112.48.28.233
[Finished in 1.0s]
▌运用署理
import requests
# 112.48.28.233
url = 'http://icanhazip.com'
# 下面的 try:......except:......是一个防错机制
# us三次握手和四次挥手面试题怎样答复ername:pass线程的概念word@署理服务线程池创立的四种器ip地址:pjson是什么意思ort
proxy = {三次握手四次挥手简述'http':'httjson文件是干什么的p://H81471服务器体系58822SW5CD:CBE9D1D21DC94189@电脑黑屏却开着机http-dyn.abuyun.com:9020'}
try:
response = requests.get(url, proxies = proxy)
print(response.status_code)
i服务器体系f response.status_code == 200:
print(response.text)
except requests.ConnectionError as e:
# 假定报电脑怎样截图错,则输出报错信息
print(e.args)
输出线程池面试题作用:
200
221.227.240.111
这样咱们就成功的运用署理了,接下来咱们写入爬虫代码。
▌署理写入
由于,我买的每秒只能央求五次json格局,所以我的线程池也要改成5,否则会报错。(有钱人随意购买或许考虑赞赏小编,下一篇抖音)
我 max_workers 我改成了 2。