1.URI和URL

URI的全称为Uniform Resource Identifier,即统一资源标志符,URL的全称为Universal Resource Locator,即统一资源定位符。

2.HTTP和HTTPS

HTTP的全称是Hyper Text Transfer Protocol,中文名叫作超文本传输协议。HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议,它能保证高效而准确地传送超文本文档。HTTP由万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)共同合作制定的规范,目前广泛使用的是HTTP 1.1版本。

HTTPS的全称是Hyper Text Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,简称为HTTPS。

3.HTTP请求过程

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

打开Chrome浏览器,右击并选择“检查”项,即可打开浏览器的开发者工具。这里访问百度http://www.baidu.com/ 输入该URL后回车,观察这个过程中发生了怎样的网络请求。可以看到,在Network页面下方出现了一个个的条目,其中一个条目就代表一次发送请求和接收响应的过程,如下图所示

我们先观察第一个网络请求,即www.baidu.com。

其中各列的含义如下。

第一列Name:请求的名称,一般会将URL的最后一部分内容当作名称。
第二列Status:响应的状态码,这里显示为200,代表响应是正常的。通过状态码,我们可以判断发送了请求之后是否得到了正常的响应。
第三列Type:请求的文档类型。这里为document,代表我们这次请求的是一个HTML文档,内容就是一些HTML代码。
第四列Initiator:请求源。用来标记请求是由哪个对象或进程发起的。
第五列Size:从服务器下载的文件和请求的资源大小。如果是从缓存中取得的资源,则该列会显示from cache。
第六列Time:发起请求到获取响应所用的总时间。
第七列Waterfall:网络请求的可视化瀑布流。

4.发送请求

(1) 请求方法

常见的请求方法有两种:GET和POST。

在浏览器中直接输入URL并回车,这便发起了一个GET请求,请求的参数会直接包含到URL里。

OST请求大多在表单提交时发起。比如,对于一个登录表单,输入用户名和密码后,点击“登录”按钮,这通常会发起一个POST请求,其数据通常以表单的形式传输,而不会体现在URL中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ch5bFYYR-1600701612796)(attachment:image.png)]

(2)请求头

请求头,用来说明服务器要使用的附加信息,比较重要的信息有Cookie、Referer、User-Agent等。下面简要说明一些常用的头信息。

Accept:请求报头域,用于指定客户端可接受哪些类型的信息。

Accept-Language:指定客户端可接受的语言类型。

Accept-Encoding:指定客户端可接受的内容编码。

Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从HTTP 1.1版本开始,请求必须包含此内容。

Cookie:也常用复数形式 Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的
功劳。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过Cookies识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。

Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如作来源统计、防盗链处理等。

User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫。

Content-Type:也叫互联网媒体类型(Internet Media Type)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型。因此,请求头是请求的重要组成部分,在写爬虫时,大部分情况下都需要设定请求头。

(3)请求体

登录之前,我们填写了用户名和密码信息,提交时这些内容就会以表单数据的形式提交给服务器,此时需要注意Request Headers中指定Content-Type为application/x-www-form-urlencoded。只有设置Content-Type为application/x-www-form-urlencoded,才会以表单数据的形式提交。另外,我们也可以将Content-Type设置为application/json来提交JSON数据,或者设置为multipart/form-data来上传文件。

在爬虫中,如果要构造POST请求,需要使用正确的Content-Type,并了解各种请求库的各个参数设置时使用的是哪种Content-Type,不然可能会导致POST提交后无法正常响应。

5.响应

响应,由服务端返回给客户端,可以分为三部分:响应状态码(Response Status Code)、响应头(Response Headers)和响应体(Response Body)。

(1)响应状态码

响应状态码表示服务器的响应状态,如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。在爬虫中,我们可以根据状态码来判断服务器响应状态,如状态码为200,则证明成功返回数据,再进行进一步的处理,否则直接忽略。表2-3列出了常见的错误代码及错误原因。

(2)响应头

响应头包含了服务器对请求的应答信息,如Content-Type、Server、Set-Cookie等。下面简要说明一些常用的头信息。

Date:标识响应产生的时间。

Last-Modified:指定资源的最后修改时间。

Content-Encoding:指定响应内容的编码。

Server:包含服务器的信息,比如名称、版本号等。

Content-Type:文档类型,指定返回的数据类型是什么,如text/html代表返回HTML文档,application/x-javascript则代表返回JavaScript文件,image/jpeg则代表返回图片。

Set-Cookie:设置Cookies。响应头中的Set-Cookie告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies请求。

Expires:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

(3)响应体

最重要的当属响应体的内容了。响应的正文数据都在响应体中,比如请求网页时,它的响应体就是网页的HTML代码;请求一张图片时,它的响应体就是图片的二进制数据。我们做爬虫请求网页后,要解析的内容就是响应体。

在浏览器开发者工具中点击Preview,就可以看到网页的源代码,也就是响应体的内容,它是解析的目标。在做爬虫时,我们主要通过响应体得到网页的源代码、JSON数据等,然后从中做相应内容的提取。

python网络爬虫学习笔记(一):网页基础相关推荐

  1. python网络爬虫学习笔记(6)动态网页抓取(一)知识

    文章目录 网络爬虫学习笔记(2) 1 资料 2 笔记 2-1 动态抓取概述 2-2 通过浏览器审查元素解析真实网页地址 2-3 网页URL地址的规律 2-4 json库 2-5 通过Selenium模 ...

  2. python网络爬虫学习笔记(7)动态网页抓取(二)实践

    文章目录 1 资料 2 笔记 2-1 准备 2-1-1. 网址 2-2-2 文本位置 2-2 代码 2-2-1 原型 2-2-2 ver0.1 1 资料 <Python网络爬虫从入门到实践> ...

  3. python 网络爬虫学习笔记(一)

    为了方便,在Windows下我用了PyCharm,个人感觉这是一款优秀的python学习软件.爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去 ...

  4. Python网络爬虫学习笔记(二)基本库的使用

    基本库的使用 最基础的 HTTP 库有 urllib . httplib2 . requests . treq 等 . 使用urlib urlib 包含四个模块 口 request : 它是最基本的 ...

  5. python网络爬虫学习笔记(二):爬虫基本概述

    1.爬虫的基本概述 (1) 获取网页 爬虫首先要做的工作就是获取网页,这里就是获取网页的源代码.源代码里包含了网页的部分有用信息,所以只要把源代码获取下来,就可以从中提取想要的信息了. python提 ...

  6. python网络爬虫学习笔记(六):Requests库的使用

    文章目录 1.基础操作 1.1 GET请求 1.2 post请求 1.3 响应 2.高级用法 1.1 文件上传 2.2 Cookies 2.3 会话维持 2.4 SSL证书验证 2.5 代理设置 2. ...

  7. python网络爬虫学习笔记(三):urllib库的使用

    文章目录 使用urllib库 1.urllib.request.urlopen()函数 urlopen()函数API: 2.urllib.request函数 验证 Cookies 保存Cookies ...

  8. python网络爬虫学习笔记(十一):Ajax数据爬取

    文章目录 1.基本介绍 2.基本原理 3.实战 有时候我们在用requests抓取页面的时候,得到的结果可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据,但是使用requests得到 ...

  9. python网络爬虫学习笔记(九):Beautiful Soup的使用

    文章目录 1.基本用法 2.节点选择器 2.1 获取属性和名称 2.2 获取内容 (1)子节点和子孙节点 (2)父节点和祖先节点 (3)兄弟节点 3.方法选择器 4.CSS选择器 Beautiful ...

最新文章

  1. SSM实现个人博客系统
  2. tableau可视化数据分析60讲(八)-tableau计算函数(重点知识)
  3. C# Activator
  4. 福州大学计算机专业考研,2015年福州大学计算机考研经验贴
  5. 【原创】什么是 wire protocol
  6. 容纳10万人服务器多少钱_令人尴尬的故事:为什么我的服务器只能容纳10名玩家...
  7. android sd卡相关avc,Android 5.x 权限问题解决方法
  8. Ubuntu安装OpenCV
  9. python3-关于GitHub的最基本操作
  10. Minimal Viable Plasma
  11. nRF51 SDK 例程分析——Blinky Example
  12. HTML——简单的网站首页
  13. 旷视深度学习框架MegEngine开源
  14. wordpress文章自动同步天涯博客插件wp2Tianya发布
  15. GuestOS? HostOS?
  16. 关于化工行业如何报警
  17. 进阶光照与材质之物体和材质
  18. springboot打包成jar包部署,无法访问到fastDFS配置文件【已解决】
  19. 【串口发送中断】基于赛元单片机使用三合一串口的UART功能
  20. SQL进阶(十一) 函数 --- Aggregate

热门文章

  1. CSS重新认识(一)
  2. C# XML文件操作类XmlHelper
  3. 在 Chrome 调试 Javascript
  4. UVA 10115 Automatic Editing
  5. http://renmin.cnblogs.com/archive/2006/03/03/341669.aspx
  6. 流行-Manifold【0】-维基百科中文版本解释
  7. 团队作业4——第一次项目冲刺(Alpha版本)4.25
  8. mysql的with rollup
  9. “Internet Explorer无法打开站点,已终止操作”解决
  10. C#基础概念二十五问[转]