首页 > 编程知识 正文

小爬虫的道理,网络爬虫会被发现吗

时间:2023-05-03 05:55:35 阅读:24469 作者:1149

前言爬行动物是非常有趣的技术。 使用爬行动物技术,可以得到别人拿不到的,或者需要付费得到的东西。 另外,还可以自动爬上和存储大量的数据,减少时间和精力做疲劳的工作。

可以说很多人都在学习编程,不玩爬虫确实会少很多意思。 无论是业余爱好者、菜鸟,还是职业爬虫类,爬虫类的世界确实很棒。

今天我们来谈谈爬行动物吧。 目的是让准备或刚开始学习爬行动物的伙伴们对爬行动物有更深入、更完整的认识。

文章目录前言:了解爬行动物1 .爬行动物是什么? 2 .爬行器分类3.Robots协议2、爬行器基本流程1 .爬行器4步骤2 .请求和响应3、请求1 .请求方式2 .请求URL3.请求头4 .请求体5 .请求七、怎么保存数据?

一、了解爬行动物1 .爬行动物是什么?

用一句话介绍有名的爬行动物。请求网站并提取数据的自动化程序

让我们来分解和理解爬行动物:

向网站发送请求意味着向网站发送请求。 例如,如果你去百度搜索关键词“Python”,此时我们的浏览器会向网站发送请求。

提取数据。 数据包括图像、文字、视频等。 都叫数据。 我们发送请求后,网站会给我们看搜索结果。 这其实还给你了数据。 这个时候,我们可以提取数据;

自动化程序(即我们编写的代码)实现了自动提取过程数据,例如下载并保存返回的图像,而不是手动操作每一张图像。

2 .爬行动物分类根据使用场景,爬虫可以分为三类:

通用爬虫(大而全)

强大,采集面广,常用于搜索引擎。 例如,百度浏览器是一个很大的爬虫程序。

聚焦爬虫(小而精)

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

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

这其实是一种以爬行动物为焦点的反复爬行动物,只收集更新的数据,不收集旧数据。 相当于始终存在并执行,只要符合要求的数据被更新,就会自动攀登新数据。

3.Robots协议爬虫有一个需要注意的Robots协议,也称为“网络爬虫排除标准”。 它的作用是告诉我们网站是爬的还是不能爬的。

这个Robots协议去哪里看? 通常,在主页的URL后面添加/robots.txt可以立即看到。 例如,百度的Robots协议位于https://www.baidu.com/robots.txt,其中规定了很多URL,如Disallow:/shifen/说明当前的Disallow3360/说明

其实这个Robots协议属于一个君子协议对爬行动物来说基本上是口头协议。 如果你违反了它,可能会被追究法律责任,但如果你不违反它,爬行动物就爬不上任何数据,所以平时双方都要闭上眼睛,不要太傲慢。

粉丝专用福利,站内跳跃

二、爬行动物的基本流程1 .爬行动物的四步爬行动物是如何工作的? 爬行动物程序大致可分为四个步骤:

发起请求

通过HTTP库向目标站点发送请求时,将发送请求。 请求可以包含其他headers等信息,并可以等待服务器的响应。

获取响应内容

服务器成功响应后,将得到响应。 响应的内容是要获取的页面的内容。 类型包括二进制数据,如HTML、Json字符串和图像视频。

解析内容

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

保存数据

的数据样式很多,可以保存为文本、保存在数据库中,也可以保存为特定格式的文件。

基本上,这是爬行动物遵循的四个步骤。

2.Request和Response Request和Response是爬行动物中最重要的部分,Request和Response是什么关系这些关系如下图所示。

简单来说,我们在电脑浏览器上搜索东西的时候,例如前面提到的在百度上搜索“Python”。 单击百度后,请求已发送到百度服务器。 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包含了所有的请求结果的每一个元素,比如每一个图片的源代码都是有的,尤其是tldkj点了左上角的小箭头之后,你移动到的每一个地方在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格式文本等。

②图片,获取的是二进制文件,保存为图片格式即可。

③视频,也是二进制文件,保存为视频格式即可。

④其他的,反正其他能够看得见的东西,理论上都是可以用爬虫获取的,具体的话得看难度的大小。

六、如何解析数据?

从前面我们可以发送请求成功之后,网页会给我们返回很多的数据,有几千甚至几万条代码,那么如何在这么多的代码中找到我们想要的数据?常用的方法有以下几个:

①直接处理。当网页返回数据就是一些文本,就是我们想要的内容,不需要过滤处理,直接处理就可以。

②Json解析。如果网页返回的不是HTML数据是Json数据,那么就需要用到Json解析技术。

③正则表达式。如果返回的数据是符合正则表达式的数据,就可以用正则去做解析。

④其他解析方式。常用的有XPath、BeautifulSoup和PyQuery,这些都是爬虫常用的解析库。

七、怎么保存数据?

拿到数据后,常用的保存数据方法有以下几种:

①文本。可以直接保存为纯文本、EXCEL、Json、Xml等等类型的文本。

②关系型数据库。数据可以保存到关系型数据库,比如MySQL和Oracle等等数据库。

③非关系型数据库。如MongoDB、Readis和Key-Value形式储存。

④二进制文件。如图片、视频、音频等等直接保存为特定格式即可。

关于爬虫,今天就先讲到这里,欢迎在下方评论区留言交流

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。