通过
python爬虫入门:什么是爬虫,怎么玩爬虫?
我们知道了什么是爬虫
也知道了爬虫的具体流程
那么在我们要对某个网站进行爬取的时候
要对其数据进行分析
就要知道应该怎么请求
就要知道获取的数据是什么样的
所以我们要学会怎么抓咪咪!
![e47ef24967f8c3230df3fd66698a205d.gif](https://i-blog.csdnimg.cn/blog_migrate/acfa7aee5bb884c6b56a1946b95d4628.gif)
哦,不对。
我们要学会怎么数据抓包
虽然小馒头也是包的一种
ok...anyway...
打开我们的 Chrome 浏览器
在这里 小帅b 提醒大家一句
尽量不要用国产浏览器
很多是有后门的
![c9d05d8049c34c4179a4100dc9f78ab6.gif](https://i-blog.csdnimg.cn/blog_migrate/4d53353981b834e615b546d853eda630.gif)
所以
Chrome 是首选!
ok,打开 Chrome 浏览器之后呢
我们随便输入一个网址吧
比如
www.xxxhub.com
![c2a3775bbf7c8a0cc883f1c51e40e33c.gif](https://i-blog.csdnimg.cn/blog_migrate/9c0c23bbffe201f313485982c050025c.gif)
营养跟不上?那就...
输入一个人人都能上的网站
www.baidu.com
用力回车
一个熟悉的页面显示在你的面前
![1b8b2df0270fdd07efe00abc0f7f6260.png](https://i-blog.csdnimg.cn/blog_migrate/a0c5077de2f6409e6bcbb391b3b9cbc9.jpeg)
这个时候,你按下 F12
你可以看到弹出一个有点装x的窗口
![1850b73fe5398c7d3efe249e22fb1710.png](https://i-blog.csdnimg.cn/blog_migrate/01fc2577fcddf6172a792d3d86b9b17f.jpeg)
这个玩意
正是我们想要的
可以看到
Element 标签下对应的 HTML 代码
其实就是这个网页的代码
我们可以在这里除了看看它的代码之外
我们还可以修改一些东西
比如我把这个按钮改成小帅b
![579d9a05e45f271860900618e347ab9b.png](https://i-blog.csdnimg.cn/blog_migrate/f0104754d313360e7454806408154ac9.jpeg)
按下回车
![134fae552ee517a996fb3b484c400a8f.png](https://i-blog.csdnimg.cn/blog_migrate/7c4f34439afd54f5b4c6918235eb7056.jpeg)
是不是瞬间逼格满满
哦,不好意思
今天不是要说怎么装x的
![ad11fb80e30741b909611725f3c814e6.png](https://i-blog.csdnimg.cn/blog_migrate/643961d3dc6baea7d2c1fb07ee836343.jpeg)
我们点击 Network 这个标签
然后刷新一下
可以看到有很多的请求
![c6100615a5d84e048884d8bd528e527c.png](https://i-blog.csdnimg.cn/blog_migrate/371b350099aaef1cd06be13d55f187b8.jpeg)
HTTP 的请求方式有好几种
GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE
不过最常见的就是 GET 和 POST 请求
咱们就一一说道说道
接下来就是
学习 python 的正确姿势
![9fbf7bf8d8f4225aa4e1837a5919abca.gif](https://i-blog.csdnimg.cn/blog_migrate/0c1fda54c66976bafa4eefb33d2034a9.gif)
我们直接搜索「苍老师」
然后我们就可以发现
有好多请求
![f17756ee2a65f9cd3c3218673fb1f765.png](https://i-blog.csdnimg.cn/blog_migrate/2df97c7ce397acd38e1c40c3923d2a48.jpeg)
这些都是 GET 请求
我们随便点击一个请求进去
![9118f18a72136b6da22015d5f7b7445c.png](https://i-blog.csdnimg.cn/blog_migrate/3bc940a221a1fd491f4d2476bc6e9e15.jpeg)
可以看到我们的请求URL
https://www.baidu.com/s?wd=%E8%8B%8D%E8%80%81%E5%B8%88&rsv_spt=1&rsv_iqid=0xad707ee600011b25&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&oq=%25E8%258B%258D%25E8%2580%2581%25E5%25B8%2588&rsv_t=5d8eqNDy4ZpyUOz7ByzyIMYfH5Jc7861dr4CFQaY3WCiDnOpBLob6Eouk23%2F3L%2BTD46O&rsv_sug3=15&rsv_pq=996e776f0000df06&rsv_sug4=19123
在 ?后面的这些 jb 玩意儿
就是 GET 请求的参数
这些参数以「键值对」的形式实现
比如这里的
wd=%E8%8B%8D%E8%80%81%E5%B8%88
就是告诉百度
我们要查询的是苍老师相关的内容
这种方式的请求方式是最简单的
所以以后我们在 Python 写 GET 请求的时候
直接在 URL 后面加个 ?然后添加参数值就好了
比如
我要百度搜索波多野结衣
那么就是
https://www.baidu.com/s?wd=波多野结衣
不信你直接在浏览器这样搜
是一毛一样的
那么,啥是 POST 请求呢?
我们在做一些信息提交的时候
比如注册,登录
这时候我们做的就是 POST 请求
POST 的参数不会直接放在 URL 上
会以 Form 表单的形式将数据提交给服务器
我们来登录一下百度
![965596cc278642591ec6e762eeb7702b.png](https://i-blog.csdnimg.cn/blog_migrate/48949536c2df0d08487b2ef64564be01.jpeg)
当我们点击登录的时候
就开始将我们的账号密码请求给百度服务器
可以看到我们请求了 login 这个接口
请求方法就是 POST
![979bbeab062b279fa0e37c8e5d43989d.png](https://i-blog.csdnimg.cn/blog_migrate/c7caa1a8c87453c338675e79d9ddcfbb.jpeg)
而我们的请求参数是以 Form 表单的方式提交的
![6e8158278c9cd23bc9fd53b2457e3a0d.png](https://i-blog.csdnimg.cn/blog_migrate/754126cafd8f7bfe02b608c7b460aba8.jpeg)
拉到下面就可以看到
username 就是 xiaoshuaib
而密码,就是被加密了的
这些都是 POST 参数
可以发现
GET请求把请求参数都暴露在URL上
而POST请求的参数放在request body 里面
POST请求方式还对密码参数加了密
这样就相对安全一些
ok
你已经了解请求方式了
接下来说说请求头
![c1dbd61acca0c7f3f2b7015eebb49dcb.gif](https://i-blog.csdnimg.cn/blog_migrate/b0564db7146d847576f9b7a77a3e719c.gif)
当然说的不是上面这个 gou 头哈
我们刚刚在访问百度的时候
可以看到这个玩意
![b217b406476f85cf6d385075e57d3f4b.png](https://i-blog.csdnimg.cn/blog_migrate/c2e861e83060529abc67ffea11046e29.jpeg)
这个就是请求头
Request Header
我们在做 HTTP 请求的时候
除了提交一些参数之外
我们还有定义一些 HTTP 请求的头部信息
比如 Accept、Host、cookie、User-Agent等等
这些参数也是我们在做爬虫要用到
通过这些信息,欺骗服务器,告诉它我们是正规请求
比如
我们可以在代码里面设置 cookie 告诉服务器我们就是在这个浏览器请求的会话
User-Agent 告诉服务器我们是浏览器请求的
![8ebcd071cfe65aa72494721c37449263.png](https://i-blog.csdnimg.cn/blog_migrate/fcf7e0f74afd8f3927d72661c45c9b89.jpeg)
说完我们这边的请求了
接着我们再说说服务器的响应
你一定遇到过 404 页面吧
或者服务器错误返回个 502 吧
![964b1fe82369c29ca9061be732a073c0.gif](https://i-blog.csdnimg.cn/blog_migrate/691a42e8ebe9970e91316efeddd9e965.gif)
这些 404 啊,200啊,301啊,502啊
都是服务器的响应码
一般服务器给我们返回 200
那就说明
我们成功请求了
![56bb1f88d419ab6a637964b55d7fb52b.png](https://i-blog.csdnimg.cn/blog_migrate/a923171173a58c83396f2eaba0affa13.jpeg)
![78510fa7e634f20c142825ce5f279b4b.png](https://i-blog.csdnimg.cn/blog_migrate/d2d100be1d18f3d0bc3d2c4031a2e33f.jpeg)
再来说说响应头
![1e9c511033427a339c700b49e8fc0688.png](https://i-blog.csdnimg.cn/blog_migrate/ea7a08005427ed84a569c44264e98222.jpeg)
当我们请求成功之后
服务器会给我们返回响应码之外
还有响应头
这个头主要是告诉我们数据以什么样的形式展现
告诉我们cookie的设置
还有一个
就是响应体了
说白了,就是服务器返回给我们的数据
我们点击 Response 就可以看到相关的数据了
![e0ae81329efce4f703e6860811793027.png](https://i-blog.csdnimg.cn/blog_migrate/e2091c5ff8309cdcd37be460657151fb.jpeg)
看,这些就是服务器返回给我们的 HTML 源代码
对于不同的请求
我们获取到的数据是不一样的
除了 HTML的,也有 JSON 的
图片二进制数据等等
可以针对不同的情况
用不同的手段来解析这些数据
说到这里
想必你已经会在 Chrome 抓包了
所谓抓包
就是我们摸清了浏览器里面的套路
知道它是怎么搞的
那么通过我们的请求
GET 请求也好
POST 请求也罢
只要知道请求方式
只要知道请求参数
只要知道请求头定义
只要知道怎么拿到返回的数据
这..
对我们来说
爬虫还难么?
![715ea63ea355b0f12527737a09f8969c.png](https://i-blog.csdnimg.cn/blog_migrate/0bcdcedafca8cf4f9d220120ba1b3a43.jpeg)
完了!
爽吗?
那还不转发?
那还不点赞?
![0ba42bf187a0967754bc2c3ce5da7bba.png](https://i-blog.csdnimg.cn/blog_migrate/2c48f86474459028750fdf4eba936df5.jpeg)
![06a4b73d1b6bf15c20485aa2423523a8.png](https://i-blog.csdnimg.cn/blog_migrate/30f3f9c091ac730af41a9e9d7dbe7539.jpeg)
那就赶紧关注
加入pythoner的聚集地
我们一起牛逼