大家好,我是K哥。
总会有一些刚刚学习爬虫的小白或者从没有接触过爬虫但是想爬取一些数据的朋友来问我:
K哥,怎么抓包啊?
今天给各位纯小白,手把手在线教学
记得点个赞呀!
首先,我们需要了解抓包抓的是什么?
抓包中的”包“指的是数据包,专业一点,你也可以说是数据报,还可以说是报文段。
如果还是听不懂,其实有个很好解决的办法
如上图,网络的传输我们可以视为两个水槽之间互相通水,当然上图我只画出了一条。
抓包其实就是我们在这个过程中获取到它们所传输的”水“
这样相信你就能过理解为什么要去抓包。
我们通过抓包可以获取到服务器与客户端之间传输的数据,我们爬虫其实就是去获取或者提交这些数据从而得到我们想要的data。
知道了我们需要获取什么,那么具体应该怎么做呢?
这里我们使用百度搜索进行简单的举例。
打开百度首页,我们需要做的是当我们搜索一个关键词时,看看百度在背后是怎么传输数据得,并且我们需要得到搜索后的数据。
开工!
K哥每次去研究一些爬虫,第一步都是打开开发人员工具
也就是上面这个东东,打开后就是下面这样样子:
想要了解网络数据相关传输,我们这需要关注网络这个Tab即可。
这里K哥给大家插一嘴,搞开发,咱们用谷歌、FireFox、Edge浏览器。
看到这里,很多朋友就会问这里面啥都没有。
当然没有
因为网站是通过HTTP协议来实现的,然而HTTP有一个特点就是无连接
。
简单点说就是如果你不去骚扰这个网站,那么这个网站就啥也不会动。
所以此时我们来随便搜索关键词 Kuls。
我们会发现出现了很多东西,这些东西就是数据包,但是这么多怎么选择?
一般根据经验都是第一条数据,当然这个需要具体分析
我们一般都会去看类型为xhr或者document的包,xhr代表着是一些json类的数据,document指的是一些html类的数据。
在本案例中,我们来找一下
根据经验,我们会发现这个正是我们需要的数据包
第一步,我们来分析一下请求的地址
https://www.baidu.com/s?ie=utf-8&mod=1&isbd=1&isid=A8F464AF55899426&ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=Kuls&oq=Kuls&rsv_pq=af6a05da0001dae9&rsv_t=587diFR1CaHLIt92KM37VAb689iKsfl8uFuvbqU1KjZNu2fdMIkTy1Al2F8&rqlang=cn&rsv_enter=0&rsv_dl=tb&rsv_btype=t&bs=Kuls&rsv_sid=undefined&_ss=1&clist=&hsug=&f4s=1&csor=0&_cr1=24332
这么一大串,搞个锤子
其实我们可以对其进行简化!
https://www.baidu.com/s?wd=Kuls
对没错,就是这样,但是这仅限百度,具体网站具体分析!
这里为什么可以简化呢?
因为我只需要查询这个关键词的内容而不需要其他的参数进行筛选,所以我们可以简化。
拿到了请求的地址,接下来我们来看看请求类型
通过查看数据包,我们会发现此次请求的是get
如果是get请求那么就很简单了,我们只需要修改url上的参数即可
但是如果是post请求,那么我们需要查看下面的表单
然后在程序中将其填充。
获取url
获取请求类型
获取请求参数
那么接下来只剩下编写程序了
import requests
headers = {
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.21(0x17001525) NetType/WIFI Language/zh_CN',
}
r = requests.get("https://www.baidu.com/s?wd=Kuls",headers=headers)
print(r.text)
一个非常简单的程序,就能够完成了。
当然,后续你可能还需要对html或者json进行处理。
关于这方面的知识以及爬虫案例,可以去公众号底部菜单栏中爬虫专栏阅读更多文章。
如果你觉得本文对你有所帮助,给我来个点赞、在看呀!
一个高中就混迹互联网的小渣渣,目前还在大学摸鱼
如果想跟我交个朋友,可以加我微信:LLLLLLS123
我的博客:www.kuls6.top
欢迎加我微信交流学习
阅读更多精彩文章,可以关注我!