你真的了解爬虫吗?看完你会对网络爬虫有更深更全面的认识(1)

功能相对单一,只针对特定网站的特定内容进行爬取,比如说去某个网站批量获取某些数据,这也是我们个人最常用的一种爬虫了

③增量式爬虫(只采集更新后的内容)

这其实是聚焦爬虫的一个迭代爬虫,它只采集更新后的数据,对老数据是不采集,相当于一直存在并运行,只要有符合要求的数据更新了,就会自动爬取新的数据。

在这里插入图片描述


3.Robots协议

在爬虫中有一个叫Robots协议需要注意一下,又称为“网络爬虫排除标准”,它的作用就是网站告诉你哪些东西能爬,哪些不能爬。

这个Robots协议去哪看?一般情况下直接在网站首页网址后面加/robots.txt就能查看,比如百度的Robots协议就在https://www.baidu.com/robots.txt ,可以看到里面有很多网址都规定了不能爬,比如Disallow:/shifen/ 说明当前Disallow:/shifen以及Disallow:/shifen下面的子目录网页均不能爬。

在这里插入图片描述

其实这个Robots协议属于一个君子协议,对于爬虫者来说,基本上就是口头协议,你违反了它你有可能会被追究法律责任,但不违反它,爬虫将是爬不到什么数据,所以平时双方都是睁一只闭一眼,不要太嚣张就可以了。

在这里插入图片描述

粉丝专属福利,站内跳转


二、爬虫的基本流程


1.爬虫的4步

爬虫是怎么干活的?爬虫程序大致上可以分为四步走:

①发起请求

通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。

②获取响应内容

如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML、Json字符串和二进制数据(如图片视频)等类型。

③解析内容

得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

④保存数据

保存的数据样式很多,可以保存为文本,也可以保存至数据库,或者保存为特定格式的文件。

基本上这就是爬虫要遵循的四步了。


2.Request和Response

Request和Response是爬虫中最重要的一部分,Request和Response是什么关系?它们两的关系如下图:

在这里插入图片描述

简单理解一下,当我们在电脑的浏览器上搜索某个东西的时候,比如前面的所说的在百度搜索“Python”,你点击百度一下,就已经向百度的服务器发送了一个Request请求,Request包含了很多的信息,比如身份信息、请求信息等等,服务器接收请求之后做判断,然后返回一个Response给我们的电脑,这其中也包含了很多信息,比如请求成功与否,比如我们请求的信息结果(文字、图片和视频等等)。

这样讲应该很好理解吧?接下来我们再好好去看一下Request和Response。


三、了解Request


Request包含了哪些东西?它主要包含了以下一些东西:

1.请求方式

请求方式可以理解为你跟网站打招呼的方式,你要从网站拿到数据,你就得用正确的方式去跟它打招呼,它才有可能理你,就好比你要别人家借个东西,你得先敲门再说你好,你直接爬窗户进去这谁瞧见了都得给你撵出去。

在这里插入图片描述

主要的请求方式有GET和POST,另外还有HEAD/PUT/DELETE/OPTIONS等等其他方式,其中最常用的还是GET这种请求方式


2.请求URL

什么是URL?URL全称统一资源定位符,比如一个网页文档、图片、视频等等都有唯一的URL,在爬虫中我们可以理解为网址或者链接。


3.请求头

什么是请求头?英文名Request Headers,通常是指请求时包含的头部信息,比如User-Agent、Host、Cookies等等。

这些东西它相当于你向网站发送请求时你的身份信息,这里面经常需要伪装一下自己,伪装成普通用户,避免你的目标网站识别出来你是爬虫程序,规避一些反扒问题,顺利拿到数据。


4.请求体

官方一点的说辞就是请求时额外携带的数据,如表单提交时的表单数据。

怎么理解?就比如说你去你岳父家提亲,你不能空着手过去提亲对吧?你得带点东西才像个提亲的样子,你岳父才会把女儿许配给你,这是大家通用的礼数,少不了的。

在这里插入图片描述

在爬虫当中怎么理解?比如说在某些页面你得先登录了或者你得告诉我你请求什么,比如说你在百度这个网页中搜索“Python”,那么这个“Python”这个关键字就是你要携带的请求体,看到了你的请求体,百度才知道你要干什么。

当然了,请求体通常是用在POST这种请求方式里面,在GET请求时我们通常是拼接在URL里面,这里先理解一下就可以了,后续具体爬虫可以去加深理解。


5.实操查看Request

既然Request的理论我们已经讲过了,那么我们就可以去实操看一下Request具体在哪个位置以及包含哪些东西。

以谷歌浏览器Chrome为例,我输入关键字“Python”可以搜索出一堆结果,我们来用网页自带的控制台窗口来分析一下我们发出的Request请求。

按住F12或者在网页空白处右键选择“检查”,然后可以看到控制台里面有很多选择,比如说上面那一栏有一个菜单栏,初级爬虫一般我们就比较常用到的是Elements(元素)和Network(网络),其他的东西暂时用不到,等你学到了高级一点的爬虫就会用到了,比如JS逆向的时候可能会用到Application这个窗口,后面用到了再了解。

Elements包含了所有的请求结果的每一个元素,比如每一个图片的源代码都是有的,尤其是当你点了左上角的小箭头之后,你移动到的每一个地方在Elements窗口下都会显示对于的源代码。

在这里插入图片描述

Network就是爬虫常用到的网络信息,其中就有我们的Request,我们来看一下,在Network窗口下,勾选Disable cache(禁用缓存),并把All点上。

在这里插入图片描述

刷新一下网页看看效果,可以看出我们发出了132个Request请求,这个不用好奇,虽然我们只是向百度发出了“Python”这么一个请求,但有些是网页附带的请求。

在这里插入图片描述

虽然里面有很多类型,什么图片格式的png啊jpeg等等,但是你可以滑动到最上面,在Type(类型)那一列中有document这种类型,就是网页文档的意思,点击进去就有我们的Request信息。

在这里插入图片描述

点击document进去之后,又有一栏新的菜单栏,在Headers那一栏下面,我们可以看到 Request URL,也就是我们前面说的请求URL,这个URL才是我们真正向网页请求的URL,然后还有请求方式,可以看出来是GET请求这种方式。

在这里插入图片描述

往下再滑动一下,还可以看到我们前面讲的请求头 Request Headers ,信息很多,但我们前面讲的User-Agent、Host、Cookies都是有的,这些都是我们给服务器的信息。

在这里插入图片描述

Request Headers里面内容虽然多,我们在写爬虫程序的时候也是要在这方面做伪装工作,但并不是所有的信息我们都要写,选择性地写一些重要的信息就可以了,比如User-Agent必带,Referer和Host是选择性地带,cookie在要登录的情况下会带,常用的也就4项要做伪装。

至于请求体这里我就暂时不做查看了,因为我们这里的请求方式是GET请求,在POST请求中才能查看到请求体,没关系,爬虫用到了你自然就会明白的。


四、了解Response


Response主要包括3块内容,我们来一一了解一下。

1.响应状态

我们发送请求之后,网站会返回给我们一个Response,这其中就包括了响应状态码对于的响应状态,大致可以分为以下几种:

①两百范围,比如响应状态码200则表示成功。

②三百范围,比如301表示跳转。

③四百范围,比如404找不到网页。

④五百范围,比如502找不到网页。

对于爬虫来说,两三百则是我们最希望看到的响应状态,有可能会拿到数据,四五百基本上就凉了,拿不到数据的

比如我们刚在在前面的Request请求发送时,在document文件中,在Headers窗口下的General里面可以看出响应状态码是200,说明网页成功响应了我们的请求。

在这里插入图片描述


2.响应头

服务器给我们的信息里面也会有响应头这一部分,这里面包含了内容类型、内容长度、服务器信息和设置Cookie等等。

其实响应头对我们来说并不是那么重要,这里了解一下就可以了。


3.响应体

这个就很重要了,除了前面第一点的响应状态,就是它了,因为它包含了请求资源的内容,比如网页HTML和图片二进制数等等。

响应体在哪里呢?也是在document文件里面的Response那一栏,可以往下滑动就可以看出里面有很多响应的数据,这就是我们获取到的数据,有的是可以直接下载的,有的则是需要用技术去解析才能拿到。

在这里插入图片描述


五、爬虫能获取到什么样的数据?


爬虫能获取到什么样的数据?基本上可以分为这么几类:

①网页文档,如果HTML文档、Json格式文本等。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

.(img-z6dUyGaK-1712998027416)]

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注Python)

img
  • 29
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值