【网络爬虫】爬虫基础

爬虫基础

  • HTTP原理
  • 网页的基础知识
  • 爬虫的基本原理
  • Cookies的基本原理等
  • 代理的基本原理

1. HTTP原理

1.1 URI和URL
  • URI:Uniform Resource Identifier,即统一资源标志符
  • URL:Universal Resource Locator,即统一资源定位符

举个例子:

https://github.com/favicon.ioc是Github的网站图标链接,它是一个URL,也是一个URI。即有了这样一个图标资源,我们用URL/URI来唯一指定了它的访问方式,这其中包括了访问协议https、访问路径(/即根目录)和资源名称favicon.ioc。通过这样一个链接,我们便可以从互联网上找到这个资源,这就是URL和URI。

URL是URI的子集,也就是说每个URL都是URI,但不是每个URI都是URL

1.2 超文本

我们在浏览器里看到的网页就是超文本解析而成的,其网页源代码就一系列HTML代码,里面包含了一系列标签,比如img显示图片,p指定显示段落。

这里写图片描述

打开淘宝首页,按F12,进入浏览器的开发者工具,这时在Elements选项卡即可看到当前网页的源代码,这些代码就是超文本。

1.3 HTTP和HTTPS
  • HTTP:Hyper Text Transfer Protocol,超文本传输协议
  • HTTPS:Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即在HTTP下加入了SSL层
1.4 HTTP请求过程

我们在浏览器中输入一个URL,回车之后便会在浏览器中观察到页面内容,实际上,这个过程是浏览器向网站所在的服务器发送了一个请求,网站服务器接收到这个请求后进行处理和解析,然后返回对应的响应,接着传回给浏览器。响应里包含了页面的源代码等内容,浏览器再对其进行解析,便将网页呈现了出来。

这里写图片描述

上图,我们打开了一个网络请求,右边方框里就是和请求相关的一些信息,这里就不一一介绍了

1.5 请求方式

GET和POST请求方法的区别:

  • GET请求中的参数包含在URL里面,数据可以在URL中看到,而POST请求的URL不会包含这些数据,数据都是通过表单形式传输的,会包含在请求体中。
  • GET请求提交的数据最多只有1024字节,而POST没有限制

一般而言,登录时,需要提交用户名和密码,其中包含敏感信息,最好以POST方式发送
上传文件时,由于文件内容比较大,也会选用POST方式

1.6 响应

响应状态码、响应头和响应体

2. 网页基础

此内容,学过WEB的都应该知道,这里就不介绍了

3. 爬虫的基本原理

简单来说,爬虫就是获取网页并提取和保存信息的自动化程序

3.1 获取网页
  • 首先要做的就是获取网页,这里就是获取网页的源代码。(python提供了许多库来帮助我们实现这个操作,如urllib、requests等)
3.2 提取信息
  • 获取网页后,接下来就是解析网页源代码,从中提取我们想要的数据
  • 采用正则表达式是一个万能的方法,但是构造正则表达式的时候容易出错
  • 由于网页的结构有一定的规则,所有还有一些根据节点属性、CSS选择器或XPath来提取网页信息的库
  • 如:Beautiful Soup、pyquery、lxml等

提取信息,是爬虫非常重要的部分,它可以使杂乱的数据变得条理清晰,以便我们后续处理和分析数据

3.3 保存数据
  • 保存数据的形式多种多样
  • 简单保存为TXT文本或JSON文本
  • 保存到数据库
  • 保存到远程服务器
3.4 自动化程序

爬虫便是代替我们来完成爬取工作的自动化程序,它可以在抓取的过程中进行各种异常处理、错误重试等操作,确保爬取持续高效地运行

3.5 能抓怎样的数据

HTML源代码、JSON字符串、二进制数据、CSS、JavaScript和配置文件

3.6 JavaScript渲染页面
  • 有时候我们在用urllib或requests抓取页面的时候,得到的源代码实际上和浏览器中看到的不一样,这是一个非常常见的问题,现在越来越多的采用Ajax、前端模块化工具来构建,整个网页可能都是由JavaScript渲染出来的,也就是说原始的HTML代码就是一个空壳。
  • 对于这种情况,我们可以分析后台的Ajax接口,也可以使用Selenium、Splash这样的库来实现模拟JavaScript渲染

4. 会话和Cookies

在浏览网站的过程中,我们经常回遇到需要登录的情况,有些页面只有登录之后才能访问,而且登录之后可以连续访问很多次网站,但是有时候过一段时间就需要重新登录。还有一些网站在打开浏览器就自动登录了,而且很长时间都不会失效,这种情况又是为什么?

答案就是:这里面涉及会话(Session)和Cookies的相关知识

4.1 会话
  • 会话,其本来的含义是指有始有终的一系列动作/消息。比如,打电话时,从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个会话
  • 而在WEB中,会话对象用来存储特定用户会话所需的属性及配置信息,这样,当用户在应用程序的Web页之间跳转时,存储在会话对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求时,还没用会话,Web服务器会自动创建一个会话。
  • 当会话过期或被放弃后,服务器终止该会话
4.2 Cookies
  • Cookies指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据

5. 代理的基本原理

我们在做爬虫的过程中经常会遇到这样的情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而没多久就可能出现错误,比如:403 Forbidden,这时候打开网页一看,可能会看到“您的IP访问频率太高”这样的提示,出现这种现象的原因是网站采用了一些反爬虫措施。

比如服务器会检测某个IP在单位时间内访问的次数,如果超过某个阀值,就会拒绝访问,返回一些错误信息

5.1 基本原理

代理实际上指的就是代理服务器,它的功能就是代理网络用户去取得网络信息,形象地说,它是网络信息的中转站。

如果我们设置了代理服务器,实际上就是本机和服务器之间搭建了一个桥,此时本机不是直接访问服务器,而是向代理服务器发出请求,请求会发送个代理服务器,然后由代理服务器在发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。

这样,我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再使我们本机的IP了,就成功伪装了IP,这就是代理的基本原理

5.2 代理的作用
  • 突破IP访问限制
  • 访问一些单位或团体内部资源
  • 提高访问速度
  • 隐藏真实IP
5.3 爬虫代理

对于爬虫来说,由于爬虫爬取速度过快,很容易造成IP访问过于频繁的问题,此时网站会封锁我们的IP,给爬取带来极大的不便

使用隐藏真实的IP,让服务器误以为是代理服务器在请求自己,这样爬取过程中通过不断更换代理,就不会被封锁,可以达到很好的爬取效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值