小白学爬虫(一) -- 基础知识

什么是爬虫

  • 爬虫就是模拟客户端(浏览器)发送网络请求,获取响应,按照规则提取数据的程序

模拟客户端(浏览器)发送网络请求的意思就是:照着浏览器发送一模一样的请求,获取和浏览器一模一样的数据

爬虫爬到的数据去哪了

  • 呈现出来:展示在网页上,或者展示在app上,
  • 进行分析:从数据中寻找一些规律

浏览器的请求

前面已经说过,爬虫是模拟客户端(浏览器)的请求,获取响应的。
那什么是浏览器的请求呢?

url

比如在百度里面搜索“爬虫”
这里写图片描述
在空白处右键–>检查–>network–>Name栏点击第一个,在右边选择Headers–>Request URL。 这是就是请求的url,一个url对应这一个固定的文件,可以先理解为一个网址。

url的组成

url的组成是:协议 + 域名 + 路径 + 参数
https://www.baidu.com/s?ie=utf-8&mod=1&isid=d2898d9a000303c6&ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=99669880_hao_pg&wd=%E7%88%AC%E8%99%AB&rsv_spt=1&oq=%25E7%2588%25AC%25E8%2599%25AB&rsv_pq=d2898d9a000303c6&rsv_t=cc32VU19zym%2FEvj2XRN3AVQii94Jur5W%2BwDLe%2B%2Brtnf%2BANyj1Tg6Ze9vlOexjXsYPePU7V1x&rqlang=cn&rsv_enter=0&rsv_sug=2&bs=%E7%88%AC%E8%99%AB&rsv_sid=undefined&_ss=1&clist=34555a158986901%0934555a158986901&hsug=&f4s=1&csor=2&_cr1=30884
以刚才那个url为例:协议就是最前面的https。域名:www.baidu.com。 路径:/s
“?”后面的就是参数,参数之间以”&”隔开。

浏览器请求url地址对应的响应是什么呢?

“响应”可以理解为:服务器给客户端返回的东西。还是以百度搜索“爬虫”为例。

在空白处右键–>检查 , 就可以得到右边部分页面, 在elements里面的东西就是浏览器得到的响应。
这里写图片描述
这里写图片描述
用浏览器请求一个url为什么会得到那么多一堆东西呢?如下图
这里写图片描述
过程是这样子的,当浏览器请求一个url地址时,得到服务器的响应之后(network下找到对应的地址,选择response,就是第三张图),会将这些字符串渲染显示到屏幕上,但是这时候浏览器发现响应字符串中又有很多url地址,然后又会请求,于是就出来这么多东西了。
但是如果是程序(爬虫)就不会得到这么多东西,只会得到一个服务器返回的响应。
总结一下:
浏览器请求url地址,得到的东西是:当前url地址对应的响应 + 图片 + css + js。对应的就是elements下面的内容
爬虫请求url地址,得到的东西是:当前url地址对应的响应。当前url的响应就是network–>reponse或者查看网页源码的内容

初识http与https

http:超文本传输协议。http协议是明文传输的,意思就是传输的数据没有经过加密,直接传输。
https:http+SSL(安全套接字层)。https是以密文传输的,传输的数据是经过加密的,接收方需要经过解密之后才能得到加密前的数据。
从这里可以看出http的效率要高于https,但是不安全。

http协议之请求

请求行

这里写图片描述
请求行就是General中的内容
这里写图片描述
Request URL:请求的url。
Request Method:请求的方式。 get或者post方式
Status Code:状态码。返回200表示正确
Referrer Policy:表示你是哪里进入这个页面的

请求头

这里写图片描述
点击view source
这里写图片描述
主要是这几个参数。
GET:表示是get方式请求的,后面的值是 路径 和 参数
connection:keep-alive。 表示可以建立常链接
Cache-Control:缓存控制。max-age=0 表示不缓存任何东西
User-Agent(重要):用户代理。服务器从这里知道是谁在请求它,什么平台下的什么版本浏览器,或者是一个程序
Cookie(重要):用来存储用户信息,每次请求都会发送给对方浏览器。
什么时候需要设置Cookie呢?
访问需要登录的页面时,对方会根据Cookie来判断是不是爬虫

请求体

请求体就是携带数据的,get请求没有请求体,post请求有请求体。那为什么get请求没有请求体呢?难道它不携带数据吗?肯定不是的,get请求的携带的数据直接通过参数给出了。
post请求常用于登陆注册
post请求携带的数据量比get请求大,多,常用于传输大文本的时候

http协议之响应

响应头

这里写图片描述
主要看Set-Cookie字段:对方服务器通过该字段设置cookie到本地。

响应体

url地址对应的响应

抓包

其实在network里面查找我们需要的东西的过程就叫做抓包

这一节讲的主要是爬虫的基础东西,从下一节开始会真正开始写代码

猜你喜欢

转载自blog.csdn.net/williamgavin/article/details/81268854