拍省爬虫三十天,从零到精通!今天是 post 请求携带参数。看完了 get 请求之后,我们再来看一下这样的一个网站, e n 余数,它这里面呢会有一些呃,这个电影的数据,同样呢也是通过上面来打开开发工具,打开之后呢,来刷新抓取数据包,搜一下, 咱们就搜一个长津湖吧,搜索发现在这里面,在这里面,它里面呢也是 json 格式的数据,对吧? 我们来看一下它的载客,载客呢有参数是表单数据,表单数据这里面有 r 二 top 以及如果你也对 type 爬虫感兴趣,土包将毕生所学都拆分成了这些,从零到进阶全流程,按照八十老奶都能学会的方式讲解 type 这三个参数 进到标头里面来看一下它的一个请求方式呢,是 pos 的 请求,你会发现啊, get 请求呢,它不会拼接在网址的后面, 他是一种更加安全的,就好比你们如果说学过前端的去写那个表单的时候,你想着如果说你把人家做登录的时候,那些什么用户名和密码都给他正常去显示的话,那就太不安全了。所以 pos 呢,他不会去把那个参数直接放在那个预览后面, 这个时候就只能去通过一种方式啊,通过构造参数字典的方式来去做一个提交,那么来去给他 写一下啊,这里的话呢是 post 请求,零七 post 请求携带参数。 好,同样呢,这里也是一样的 import request 导入模块,需要呢给它设置一下链接弄过来, 那么这个时候它的一个参数名称呢,叫做 beta, 当然这个是变量名,我们这里的意思是,嗯,就最好呢变量名和这个参数名给它写成一样的,后面就好,方便去,方便去做,方便去给它写。那再把这三个参数给它拿过来就好了。复制放到这里来, 这里呢也得给它改一下啊,会比较麻烦。 好,这个地方呢,都给它 加上引号,然后这里呢给它加上逗号, ok, 这里是不是哦少了这个东西啊?好了,现在没问题了啊。再来去通过请求接收响应,如果开始去点什么就是 post 了,它这里是一个 post 的 请求,所以我们这里就是写成 y r 等于 y r, data 呢就等于 data 好, header 呢,可以去直接复制一个 header 过来,那么 header 这个地方,它这里面就只有个什么,就只有一个 user agent, 也就是它只有一个浏览器的身份, 浏览器的身份它是共用的,只要你不换浏览器,你去请求任何的页面,它都是同样的身份,所以 user agent 它是共用的。但是 cookie 它不是啊, cookie, cookie, 他 们还没讲 cookie 呢,是用户的身份,它是每个网站呢,每个网站每个平台它都有自己的用户,所以它每个平台的用户它是不一样的。 所以这里如果咱们就只是一个 u z i 技能呢,可以去共用。那就再来放个 h s 吧,来去给它 print 打印一下,输出一下,点 j s 右键去运行看一下。 哎,这里就得到了对应的数据来就可以去做解析了嘛,他这里去做解析到呢,咱们后面也会讲到对应的一些解决方式,你也可以去选择用普通的自然取值列表循环去给它取值,也是可以的。好吧, 那讲完了 pos 之后,其实整个 get 和 pos 的 它区别就是哪里呢?区别就是啊,这个参数名称不一样, 参数名称不一样。其次呢是 get 请求,它有两种方式,一种呢是直接拼接在那个 ui 后面,一种呢是直接构造 power 请求头啊,请求参数字典。那么 pos 呢,就只有一种方式啊,构造 dat, 提交参数字典,通过 dat 来去传餐。好, 那么参数呢,其实也是有区分的啊,分为有效参数和无效参数,有效参数和无效参数。 有效参数呢,就是就是不带该参数,或者参数不对 就获取不到正确的数据,而无限的说的是你带不带对不对?都不影响正确数据获取。好,那么怎么去测试呢?当然这个东西你测不测都可以啊,只是说他有这样的一个概念,我们这里可以通过我先把上面的注示一下吧, 好,可以通过来这里删删他对应的一个参数来去判断。 比如说我先把这个删掉,删掉之后来跑一下,他能不能得到正确的数据呢?是能得到正确的数据的,所以他刚删的这个是无效参数,对吧?那么空的参数一般来说他都是无效的,来再跑一下, 好,他也是能正常获取到正确数据的。那么这个呢,我们再一次性删多一点啊,四零零一给他删掉之后呢?他第一个是不是也是那个?哎,就不一样了,是吧?如果说我们这里带上这个四零零一, 四零零零一啊,他这里呢是腾讯云资源订单交付经理,那删掉之后呢,他就变成了另外的一个板块了,变成了什么使命召唤手游了,所以这个东西他是有效参数,虽然说你不带他也得到了数据,但他得到的不是正确的数据,那么这里呢,拍进那个删掉之后 得不到数据了,所以它是有效的,这个呢也是有效的,是吧?那么这个呢?好一下数据得到了,那么对不对呢?腾讯云没问题,这个呢,删掉 啊,它也是能得到正确的数据的,那么就说明它也是无效的嘛。那就说这个可以通过测试来去判断它是有效的还是无效的。但是咱们正常在开发的时候呢,没有必要去做测试啊, 因为你有没有效他都全部带上了的吗?有效的也有,他无效的他也有,那么都带上,那就肯定是能够去做一个正确的请求的,除非他那个参数是每次都是变化的,那就需要去用后后续要学习的那个 j s 对 象来做处理了。这这个是有效参数和无效参数的一个区别啊。 如果你也对拍粉爬虫感兴趣,主播将毕生所学都拆分成了这些,从零到进阶,全流程,按照八十老奶都能学会的方式讲解。
粉丝1199获赞1.0万

哎,你是不是也遇到过这种情况,明明就是想快速测一下 api 或者下载个小文件,结果呢,非得打开一个又大又慢的图形界面工具。说真的,有时候这种工具真的太拖节奏了。 如果你也有这种烦恼,那 curl 简直就是为你量身定做的,你可以把它想象成一把互联网世界的瑞士军刀,小巧锋利,而且功能强大到超乎你的想象。 好,那咱们就来具体看看。 curl, 它的全称是 client for url, 顾名思义,就是面向网址的客户端。这名字其实已经把它的核心任务说清楚了,就是作为一个客户端去和任何 url 地址进行数据交互。 它就是这么一个纯粹的命令行工具,只专注做一件事儿,传输数据。那么这把瑞士军刀到底有多全能呢?你看啊,最基本的上市发一个 getpost 请求下载文件,那都是小菜一碟, 复杂点儿的,比如测试和调试 a p i, 在 搅拌里搞自动化,它也完全没问题。甚至它还能处理像自定义请求头、 cookie 和身份验证这些麻烦事儿。而且啊,它支持的协议特别多,所以不管是在开发还是微印工作里,它都是一个绝对少不了的离器。 行,那咱们就先从它最基础也是大家最常用的功能说起,就是从一个网址上获取数据,或者说下载东西。 这里有三种最核心的下载方式,特别简单,如果你只是想快速看一眼网页的源码长啥样,直接 call 后面跟上网址就行了,内容会直接打在屏幕上, 那要是想把内容存下来呢?也好办,用小写的杠 o 参数,你就能自己给文件起个名字。还有一个更用,用的是大写的杠 o, 它会自动用网址里原来的文件名来保存。这在下载图片呐,安装包啊这些东西的时候就特别方便。 不过呢,你用着用着可能就会碰到一个问题,现在很多网站,特别是那种短链接,都会用重定向技术,就是把你跳到另一个地址去, 但可默认情况下,可不会自己跟着跳哦。解决办法简单得很,只要加上一个杠 l 参数就行了。这下就等于告诉克尔,哎,哥们,要是服务器让你去别的地方,你就跟着去,别犹豫。 说真的,在现在的网络环境里,这个菜数基本上是必加的了。好的,刚才说的下菜,那都只是开胃小菜,接下来的才是重头戏。咱们来看看 karl 是 怎么发挥它真正的威力,也就是和 api 对 话。 跟 api 打交道呢,我们最常用的方法就是 get 和 post。 你 可以这么理解, get 呢,就好比是跟四服务器说,欸,能把那个数据给我吗?你是去要东西的。而 post 呢,就是跟四服务器说,欸,这是给您的数据,你收一下,你是去送东西的。 call 默认就是用 get, 不 过要让它发一个 pose, 请求也同样非常简单。咱们来玩个搭积木的游戏,一步一步拼出一个完整的 api 请求。第一步也是最基础的一块积木,当然就是目标地址了。我们先把 call 命令和 api 的 网址给放上去 好,第一块积木放好了,现在是第二块,我们得明确告诉服务器,咱们想干嘛, 加上一个杠 x post 参数。这就好比给咱们的请求贴了个大大的标签,上面写着 post, 让服务器一眼就知道我们的意图。 ok, 现在地址有了,方法也有了,但是服务器还不知道咱们要送的这包货到底是什么类型的。 所以这第三块积木就来了,请求投,我们用杠 h 参数告诉服务器 content type 是 application json。 这就等于是在说,注意啦,我接下来要给你的是 json 格式的数据哦。 最后,也是最关键的一块积木,就是咱们要发送的数据本身,用 dd 参数把咱们的 json 数据包给它放进去,你看齐活了,一个完整规范的 jsonpos 请求就这么打好了,是不是特别有条理? 当然了,在现实世界里,网络通信不总那么顺利,万一请求失败了,我们心里肯定会想,到底哪儿出错了。这种时候, curl 自带的调试工具就派上大用场了。 排查问题的第一招就是让 curl 变得啰嗦一点,你只要加上一个杠微参数,它就会把整个通信过程的来龙去脉全都给你打印出来。 想看懂这些?睿智很简单,你只要记住,大于号 v 开头的是你发出去的东西,小于号 k 开头的是服务器回复给你的,而星号 s 开头的是一些连接的额外信息。 有了这个,你就等于有了 x 公式,也能把整个过程看得清清楚楚。其实 curl 给你准备了好几种不同级别的放大镜, v 呢,就适合绝大部分的日常调试。如果你只是想把响应头和响应内容一起看,那用 i 就 更方便。可要是真遇到什么疑难杂症,需要进行最底层的分析,想看看每一个字节是怎么传输的?那杠 trace 就是 你的终极武器了。 好了,讲到这里,恭喜你,你已经解锁了一项非常强大的命令行新技能了, 咱们来快速回顾一下。现在你已经知道怎么用杠 o 和杠 o 高效的下来文件,直到用杠 l 来处理网页转跳。 更厉害的是你学会了用杠 x、 杠 h 和杠 d 像个专家一样和 api 交互。当然最重要的你还学会了怎么用杠 v 像个侦探一样去调试网络问题,这些可都是你在命令行令世界里施展超能力的基石啊! 那么现在问题来了,既然你已经拥有了直接从中端和整个互联网对话的超能力,你第一个想用它来自动完成的任务是什么呢?是每天早上自动抓取一份天气预报?还是写个脚本来帮你盯着你喜欢的商品有没有降价?快在评论里分享一下你的想法吧!