网页爬虫抓取百度图片(浅谈一下爬虫什么是爬虫?(二):请求网站并提取数据的自动化程序)
优采云 发布时间: 2021-11-15 04:21网页爬虫抓取百度图片(浅谈一下爬虫什么是爬虫?(二):请求网站并提取数据的自动化程序)
前言
爬虫是一项非常有趣的技术。您可以使用爬虫技术来获取其他人无法获得或需要付费的东西。您还可以自动抓取并保存大量数据,减少手动完成一些繁琐任务的时间和精力。
可以说,学编程的人很多,不玩爬虫的意义就少了很多。无论是业余爱好者、私人工作还是专业爬虫,爬虫世界真的很精彩。
今天给大家讲一下爬虫,目的是让准备学习爬虫或者刚入门的人对爬虫有更深入、更全面的了解。
一、认识爬虫
1.什么是爬虫?
一句话介绍著名的爬虫:一个请求网站并提取数据的自动化程序。
下面我们来拆解了解一下爬虫:
网站的请求就是向网站发送请求。比如去百度搜索关键词“Python”。这时,我们的浏览器会向网站发送请求;
提取数据。数据包括图片、文字、视频等,统称为数据。我们发送请求后,网站 会将搜索结果呈现给我们。这实际上是返回数据。这时候我们可以查看数据来提取
自动化程序,也就是我们写的代码,实现了过程数据的自动提取,比如批量下载和保存返回的图片,而不是手动一一操作。
2. 爬虫分类
根据使用场景,爬虫可以分为三类:
①万能爬虫(大而全)功能强大,采集范围广泛。它通常用于搜索引擎。比如百度浏览器就是一个非常庞大的爬虫程序。
②专注爬虫(小而精) 功能比较单一,只爬取特定网站的特定内容,比如去一个网站批量获取一些数据,这也是我们的个人最常用的一种爬虫。
③增量爬虫(仅采集更新内容) 这其实是一个专注于爬虫的迭代爬虫。它只是采集更新数据,而不是旧数据采集,相当于一直存在和运行。只要满足要求的数据有更新,就会自动抓取新的数据。
3.机器人协议
爬虫中有一个叫做Robots的协议需要注意,也称为“网络爬虫排除标准”。它的作用是网站告诉你什么可以爬,什么不能爬。
在哪里看这个机器人协议?
一般情况下,可以直接在网站首页URL中添加/robots.txt进行查看。例如,百度的Robots 协议在/robots.txt 中。可以看到有很多URL是规定不能爬取的,比如Disallow:/shifen/表示当前的Disallow:/shifen和Disallow:/shifen下的子目录都不能爬取。
实际上,这份Robots协议属于君子协议。对于爬虫来说,基本上是口头约定。如果你违反了它,你可能会被追究责任。但是,如果你不违反它,爬虫将无法抓取任何数据,所以通常双方都视而不见,只是不要太嚣张。
二、爬取的基本过程
1.爬行4步
爬行动物是如何工作的?
爬虫程序大致可以分为四个步骤:
①发起请求
通过HTTP库向目标站点发起请求,即发送一个Request,可以收录额外的headers等信息,等待服务器响应。
②获取回复内容
如果服务器可以正常响应,就会得到一个Response。Response的内容就是要获取的页面的内容。类型可能包括 HTML、Json 字符串和二进制数据(如图片和视频)。
③内容分析
获取的内容可能是HTML,可以使用正则表达式和网页解析库进行解析。可能是Json,可以直接转成Json对象解析,也可能是二进制数据,可以保存或者进一步处理。
④保存数据
保存的数据有多种类型,可以保存为文本、保存到数据库或保存为特定格式的文件。
基本上,这是爬虫必须遵循的四个步骤。
2.请求和响应
请求和响应是爬虫最重要的部分。请求和响应之间是什么关系?
两者的关系如下:
简单理解一下,当我们在电脑浏览器上搜索东西的时候,比如前面提到的在百度搜索“Python”,你点击百度,已经向百度的服务器发送了一个Request请求,Request中收录很多信息,比如如身份信息、请求信息等,服务器收到请求后做出判断,然后返回一个Response给我们的电脑,里面也收录了很多信息,比如请求成功,比如我们请求的信息结果(文本、图片、视频等)。
应该很容易理解吧?
接下来,让我们仔细看看请求和响应。
三、了解RequestRequest中收录什么?
它主要收录以下内容:
1.请求方法
请求方法可以理解为你打招呼的方式网站。如果你从网站那里得到数据,你要以正确的方式迎接它,这样它才能回应你,就像你从别人家借东西一样,你要先敲门再说你好。可以直接爬上窗户进去,看到的人必须出去。
主要的请求方法是GET和POST,还有其他的方法如HEAD/PUT/DELETE/OPTIONS,最常用的是GET。
2.请求网址
什么是网址?
URL的全称是Uniform Resource Locator。例如,一个网页文档、图片、视频等都有一个唯一的网址,可以理解为爬虫中的网址或链接。
3.请求头
请求头是什么?
英文名称Request Headers通常是指请求中收录的头信息,如User-Agent、Host、Cookies等。
当你向网站发送请求时,这些东西就相当于你的身份信息。经常需要伪装自己,伪装成普通用户来躲避你的目标。网站 识别你是爬虫,避免一些反扒问题,顺利获取数据。
4. request body 的官方说法是请求中携带的附加数据,比如提交表单时的表单数据。
在爬虫中如何理解?
例如,在某些页面上,您必须先登录,或者您必须告诉我您的要求。比如你在百度网页搜索“Python”,那么关键词“Python”就是你要携带的请求体,看到你的请求体,看到百度就知道你要做什么了。
当然,请求体通常用在 POST 请求方法中。GET 请求时,我们通常将其拼接在 URL 中。先了解一下就够了,后续具体爬虫可以去加深了解。
5.实用视图请求
既然我们已经讲了Request的理论,那我们就可以进入实际操作,看看Request在哪里,收录什么。
以谷歌浏览器为例,我输入关键词“Python”就可以搜索到一堆结果。我们使用网页自带的控制台窗口来分析我们发送的Request请求。
按住F12或者在网页空白处右击选择“检查”,然后就可以看到控制台里有很多选项了。例如,上列有一个菜单栏。初级爬虫一般使用元素(Elements)。还有Network(网络),其他的东西暂时不需要,等你学习更高级一点的爬虫时会用到,比如JS逆向工程可能会用到Application窗口,以后再学习。
Elements 收录了所有请求结果的每一个元素,比如每张图片的源代码,尤其是点击左上角的小箭头,你移动到的每一个地方都会在 Elements 窗口下显示为源代码。
网络是爬虫常用的网络信息。其中包括我们的请求。让我们来看看。在“网络”窗口下,选中“禁用缓存”并单击“全部”。
刷新网页看看效果。您可以看到我们发送了 132 个请求请求。不要对这个好奇。虽然我们只向百度发送了类似“Python”这样的请求,但其中一些是附加到网页的请求。
虽然图片格式有很多种,比如png、jpeg等,但是可以滑动到顶部。在Type栏中,有文档类型,即web文档的含义。点击进入,我们将是我们的。索取资料。
点击文档进入后,有一个新的菜单栏。在Headers列下,我们可以看到Request URL,也就是我们前面提到的请求URL。这个URL就是我们实际从网页请求的URL,然后返回 有一个请求方法,可以看出是一个GET请求。
如果再次向下滑动,还可以看到我们之前提到的 Request Headers。信息很多,但是我们前面提到的User-Agent、Host、Cookies都是我们提供给服务器的信息。
虽然Request Headers里面的内容很多,我们在写爬虫程序的时候也要做这方面的伪装工作,但是不是所有的信息都要写,有选择的写一些重要的信息就足够了,比如User-Agent必需的。Referer 和 Host 是可选区域。登录时会携带cookies,常见的有4种需要伪装。
至于请求体,我暂时不去查了,因为我们这里的请求方法是GET请求,请求体只能在POST请求中查看。没关系,爬虫什么时候用你就明白了。
四、了解响应
Response 主要包括 3 条内容,我们来一一看看。
1.响应状态我们发送请求后,网站会返回给我们一个Response,其中收录响应状态码的响应状态,大致可以分为以下几种:
①例如在200以内,响应状态码200表示成功。
②三百的范围,比如301就是跳跃。
③四百范围内,如404找不到页面。
④范围五百,如502找不到页面。
对于爬虫来说,两三百是我们最想看到的响应状态,有可能获取到数据,而四五百基本是冷的,获取不到数据。
比如我们刚刚发送了之前的Request请求时,在文档文件中,在Headers窗口下的General中,可以看到响应状态码为200,表示网页成功响应了我们的请求。
2. 响应头
服务器给我们的信息也会收录响应头,其中包括内容类型、内容长度、服务器信息、设置cookies等。
其实响应头对我们来说并没有那么重要,在这里了解一下就行了。
3.响应体
这一点很重要,除了上面第一点的响应状态,就是它,因为它收录了请求资源的内容,比如网页HTML和图像二进制数。
响应体在哪里?它也在文档文件的响应列中。可以向下滑动,看到有很多响应数据。这是我们得到的数据。有些可以直接下载,有些需要技术分析。知道了。
五、爬虫能得到什么样的数据?
**爬虫可以获取什么样的数据?**基本上可以分为几类:
① Web 文档,如 HTML 文档、Json 格式的文本等。
②图片以二进制文件形式获取,可以保存为图片格式。
③视频,也是二进制文件,可以保存为视频格式。
④其他,反正其他能看到的东西理论上爬虫都能得到,看难易程度。
六、如何解析数据?
从前面我们可以成功发送请求,网页会返回给我们很多数据,有几千甚至几万个代码,那么如何在这么多代码中找到我们想要的数据呢?常用的方法如下:
①直接治疗。当网页返回的数据是一些文本时,就是我们想要的内容,不需要过滤处理,直接处理即可。
②Json分析。如果返回的网页不是HTML数据而是Json数据,则需要Json解析技术。
③正则表达式。如果返回的数据是符合正则表达式的数据,可以使用正则表达式进行分析。
④其他分析方法。常用的有XPath、BeautifulSoup、PyQuery,都是爬虫常用的解析库。
七、如何保存数据?获取数据后,常用的保存数据的方法如下:
①文字。可以直接保存为纯文本、EXCEL、Json、Xml等类型的文本。
②关系数据库。数据可以保存到关系型数据库,如MySQL和Oracle数据库。
③非关系型数据库。比如MongoDB、Readis和Key-Value存储。
④ 二进制文件。比如图片、视频、音频等可以直接保存为特定格式。练习视频: