【Python爬虫】爬虫预备知识

什么是爬虫

爬虫全称网络爬虫,又称网络蜘蛛、网络机器人等,它可以自动地浏览网络中的信息按照我们制定的规则,我们制定的规则就叫做网络爬虫算法,使用python可以用十分简洁的代码来完成爬虫算法的编写

为什么要学习爬虫

学习爬虫的目的有很多,对于不同的人来说学习爬虫有不同的用处,有人利用爬虫做数据分析,有人利用爬虫来实现自己个人的小型搜索引擎,还有人学习爬虫是为了更好的了解网络结构从而更好的深入学习web开发或者写一个自己的网站等等,每个人学习的目的和目标不同学习爬虫的原因就不同。并不是一定人人都要学习爬虫,但是python爬虫作为较好上手的一方面还是很多人学习的,可以体验到编程的乐趣

爬虫的分类

爬虫主要分为四种:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫,下面将对这些进行依次讲解

通用网络爬虫

英文名称:General Purpose Web Crawler

通用网络爬虫又叫作全网爬虫,顾名思义,通用网络爬虫爬取的目标资源在全互联网中,所以由此看出通用网络爬虫爬取的数据是巨大的,并且覆盖范围广。所以这类爬虫对性能的要求是很高的,需要强大的算法和硬件来支撑,一般用于大型的搜索引擎中,应用价值很高,从当年某度的出现对中国互联网的改变就不难看出。通用网络爬虫在爬行的时候会采取一定的爬行策略,主要有深度优先爬行策略和广度优先爬行策略

聚焦网络爬虫

英文名称:Focused Crawler

聚焦网络爬虫也叫主题网络爬虫,顾名思义,聚焦网络爬虫是按照预先定义好的主题有选择地进行网页爬取的一种爬虫,是一种有针对性的爬虫,不像通用网络爬虫那样范式,而是将爬取的目标放在指定的网页中或相关的网页中,这样可以大大降低对硬件的要求。聚焦网络爬虫主要应用于特定信息的爬取中,主要为某一类特定的人群提供服务,像一些对某东和某宝的价格波动插件,就是对这些特定的网站进行不断爬取,从而获取价格信息

增量式网络爬虫

英文名称:Incremental Web Crawler

增量式网络爬虫在爬取网页的时候,只爬取内容发生变化的网页或者新产生的网页,对于未发生内容变化的网页,则不会爬取,在一定程度上能够保证所爬取的页面,尽可能是新页面,这样可以在一定程度上保证数据不发生冗余

深层网络爬虫

英文名称:Deep Web Crawler

在互联网中,网页按存在方式分类,可以分为表层页面和深层页面。所谓的表层页面,指的是不需要提交表单,使用静态的链接就能够到达的静态页面,而深层页面则隐藏在表单后面,不能通过静态链接直接获取,是需要提交一定的关键词之后才能够获取得到的页面。在互联网中,深层页面的数量往往比表层页面的数量要多很多,故而,我们需要想办法爬取深层页面。爬取深层页面,需要想办法自动填写好对应表单,所以,深层网络爬虫最重要的部分即为表单填写部分。

学习爬虫需要什么

在上面我们介绍了什么是爬虫以及爬虫的分类,可以发现聚焦网络爬虫是对硬件和互联网要求较低的一个方向,也是我们比较好上手的方向,那么我们在学习爬虫之前需要知道什么呢,下面我将来讲解我们在学习爬虫时大致需要什么东西,就以我自己的经历来讲解吧

网络结构

首先我们需要了解网络的结构才能更好的在网络进行爬取数据,下面将介绍网络的大致结构,这里我用通俗易懂的方式来讲解我的理解

IP与TCP协议

IP与TCP协议的出现是为了解决计算机与计算机之间的通信问题,我们人类也是一样的,有多种语言在使用:英语、汉语、日语、韩语等等,但是我们各个国家之间需要交流和沟通,所以出现了联合国通用语言,计算机也是一样,出现了IP与TCP协议

IP协议

IP协议主要负责数据包在网络中的传输,包括数据包的路由、分片、拼装等功能,就像我将一个包裹送到你家里一样需要提供我的住址和你的地址才能交由快递公司运送,ip地址就相当于是你我的地址

TCP协议

TCP协议则是建立在IP协议之上的传输层协议,主要负责在通信的两端建立可靠的连接,并对数据进行分段、组装、检验等操作,就好比快递公司送货一样需要对快递进行打包等操作

详细了解

IP(网络之间互连的协议)_百度百科 (baidu.com)

TCP(传输控制协议)_百度百科 (baidu.com)

HTTP与HTTPS协议

在讲http和https协议之前我们需要了解一下html是什么

HTML

英文全称: Hyper Text Markup Language

html中文名称为超文本标记语言,它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体,HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等,简单来说html也是一种文本,和我们的txt类似,只是在此基础上添加了更多的功能,称之为超文本

HTTP

英文名称:Hyper Text Transfer Protocol

http中文名称为超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议,简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息,但是http协议是没有进行加密的明文传输,只要有人进行拦截就能直接读取其中的信息

HTTPS

英文名称:Hyper Text Transfer Protocol Secure

https中文名称为超文本传输安全协议,相比http多了安全两字,HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包

详细了解

HTML_百度百科 (baidu.com)

HTTP_百度百科 (baidu.com)

HTTPS_百度百科 (baidu.com)

DNS

这里不做详细介绍,DNS主要用于将IP地址解析成域名或者将域名解析到对应的IP地址,就像一个人有他的真正名字也就是身份证上的名字即IP地址,但是他还可以有很多小名或外号即域名,这里只是粗范的理解一下,大家可以去详细了解

域名系统_百度百科 (baidu.com)

URL

在我需要去到一个人家中的时候,我会思考我是坐公交还是坐车去,那个人家的地址在哪,在网络中url就负责着这样的功能

简单介绍

英文名称:Uniform Resource Locator

url中文名称为统一资源定位符,由两个主要的部分构成:协议【Protocol】和目的地【Destination】,协议是告诉我们自己面对的是何种类型的Internet资源,也就是我所说的需要坐什么车去,在web中最常见的协议是http和https,它表示从Web中取回的是HTML文档。其他协议还有gopher,ftp和telnet等,目的地可以是某个文件名、目录名或者某台计算机的名称,也就是我所说的对方的家

URL组成

Scheme——代表访问的协议,http、https、ftp等

Host——主机名,域名,如:www.baidu.com

Port——端口号,可以说是从对方家里的那扇门进,浏览器默认http为80端口,https为433端口

Path——查找路径,如:www.jianshu.com/trending/ 中的trending/now就是path

Query-string——查找字符串如:www.baidu.com/s?wd=python 后面的wd=python就是

Anchor——锚点,前端用来页面定位。现在一些前后端分离项目,也用锚点来导航

注意:

在浏览器请求一个URL,浏览器会自动对URL进行编码,除了英文字母,数字和部分符号外,其他的全部用#+十六进制编码值编码

详细了解

统一资源定位系统_百度百科 (baidu.com)

网络请求

通常我们会看到一些页面显示404的画面,这其实就是一种网络请求的状态,接下来要讲一下http和https网络请求的方式和状态

网络请求的方式

网络请求大致有9种,但是常用的只有get请求和post请求

GET请求

一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候会使用get请求

POST请求

向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post请求。 以上是在网站开发中常用的两种方法。并且一般情况下都会遵循使用的原则。但是有的网站和服务器为了做反爬虫机制,也经常会不按常理出牌,有可能一个应该使用get方法的请求就一定要改成post请求,这个要视情况而定

请求头参数
User-Agent

浏览器名称,这个在网络爬虫中经常会被使用到,请求一个网页的时候,服务器通过这个参数就可以知道这个请求是由哪种浏览器发送的。如果我们是通过爬虫发送请求,那么我们的User-Agent就是Python,这对于那些有反爬虫机制的网站来说,可以轻易的判断你这个请求是爬虫,因此我们要经常设置这个值为一些浏览器的值,来伪装我们的爬虫

Referrer

表明当前这个请求是从哪个URL过来的,这个一般也可以用来做反爬虫技术,如果不是从指定页面过来的,那么就不做相关的响应

Cookie

HTTP协议是无状态的。也就是同一个人发送了两次请求,服务器没有能力知道这两个请求是否来自同一个人,因此这时候就用cookie来做标识。一般如果想要做登录后才能访问的网站,那么就需要发送cookie信息了

常见的响应状态码

200:请求正常,服务器正常的返回数据

302:临时重定向,比如在访问一个需要登录的页面的时候,而此时没有登录,那么就会重定向到登录页面

301:永久重定向,比如在访问www.jingdong.com 的时候会重定向到 www.jd.com(现在没了)

400:请求的URL在服务器上找不到,换句话说就是请求URL错误

403:服务器拒绝访问,权限不够

500:服务器内部错误,可能是服务器出现bug了

详细了解

HTTP协议 9 种请求方式用途及区别(详解)

状态 | Status - HTTP 中文开发手册 - 开发者手册 - 腾讯云开发者社区-腾讯云 (tencent.com)

HTTP 请求头各参数具体含义

抓包工具

在编写爬虫的时候抓包工具是十分重要的一个手段让我们去了解页面的信息,这里讲解一下Chrome抓包工具,当然Edge和其他浏览器也有他们的抓包工具

Elements

可以帮助我们分析网页结构,获取我们想要的数据。但是Elements下是最终呈现的网页数据,有时候网页数据是通过ajax请求得到的,因此Elements下的数据不能完全相信

在这里插入图片描述

Console

用来打印网页的一些信息

在这里插入图片描述

Sources

整个网页所加载的所有文件

在这里插入图片描述

Network

查看整个网页发送的所有网络请求。一般我们想要去查看某个请求的信息,都可以到这个里面去看
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值