厂房建设招标网站,博客营销是一种新兴的网络营销方式,东莞最近发生了什么大事,佛山新网站建设报价前言
可以说很多人学编程#xff0c;不玩点爬虫确实少了很多意思#xff0c;不管是业余、接私活还是职业爬虫#xff0c;爬虫世界确实挺精彩的。
今天来给大家浅谈一下爬虫#xff0c;目的是让准备学爬虫或者刚开始起步的小伙伴们#xff0c;对爬虫有一个更深更全的认知…前言
可以说很多人学编程不玩点爬虫确实少了很多意思不管是业余、接私活还是职业爬虫爬虫世界确实挺精彩的。
今天来给大家浅谈一下爬虫目的是让准备学爬虫或者刚开始起步的小伙伴们对爬虫有一个更深更全的认知。
哪怕你没学过爬虫看完这篇文章你也能明白爬虫的原理 文章目录前言一、认识爬虫1.什么是爬虫2.爬虫的分类3.Robots协议二、爬虫的基本流程1.爬虫的4步2.Request和Response三、了解Request1.请求方式2.请求URL3.请求头4.请求体5.实操查看Request四、了解Response1.响应状态2.响应头3.响应体五、爬虫能获取到什么样的数据六、如何解析数据七、怎么保存数据结语一、认识爬虫
1.什么是爬虫
用一句话来给大家介绍大名鼎鼎的爬虫请求网站并提取数据的自动化程序。
通俗易懂一点讲爬虫能干什么它能帮你从网站上自动下载大量的文字、图片、视频、音频等等的数据不用你一个一个地手动去操作。
2.爬虫的分类
根据使用场景爬虫可以分为三类
①通用爬虫大而全 功能强大采集面广泛通常用于搜索引擎比如百度浏览器就是一个很大的爬虫程序。
②聚焦爬虫小而精 功能相对单一只针对特定网站的特定内容进行爬取比如说去某个网站批量获取某些数据这也是我们个人最常用的一种爬虫了。
③增量式爬虫只采集更新后的内容 这其实是聚焦爬虫的一个迭代爬虫它只采集更新后的数据对老数据是不采集相当于一直存在并运行只要有符合要求的数据更新了就会自动爬取新的数据。 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等信息等待服务器响应。
②获取响应内容 如果服务器能正常响应会得到一个ResponseResponse的内容便是所要获取的页面内容类型可能有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
什么是URLURL全称统一资源定位符比如一个网页文档、图片、视频等等都有唯一的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范围比如响应状态码200则表示成功。 ②300范围比如301表示跳转。 ③400范围比如404找不到网页。 ④500范围比如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形式储存。 ④二进制文件。如图片、视频、音频等等直接保存为特定格式即可。 关于爬虫今天就先讲到这里欢迎在下方评论区留言交流。 结语
爬虫是把双刃剑用来“砍瓜切菜”还是“伤人性命”全凭使用者一念之间希望大家合理利用爬虫。
当然了如果你技术很菜你想做点出格的事都是不可能滴。
感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你干货内容包括 点击文末的名片可以抱走