【Python爬虫学习笔记1】网络协议及请求基础

http协议与https协议

HTTP协议(全称为HyperText Transfer Protocol,超文本传输协议),是发布和接收HTML页面的方法,其服务端口号为80。

HTTPS协议为HTTP协议的加密版本,其在HTTP下加入了SSL层,服务端口号为443。

URL结构解析

URL(Uniform Resource Locator,统一资源定位符),用于从互联网上获取某个资源,其组成格式如下:scheme://host:port/path/?query-string=xxx#anchor

scheme:代表访问协议类型,如http、https和ftp等。

host:域名,比如 “cn.bing.com”。

port:端口号,访问一个网站时浏览器默认使用80端口。

path:查找路径,比如 “https://www.imooc.com/course/list”,后面的course/list就是path。

query-string:查询字符串,比如 “https://cn.bing.com/search?q=python”,后面的q=python就是查询字符串。

anchor:锚点,用于页面定位。

浏览器请求一个url,浏览器会对url进行编码——除英文字母,数字和部分符号外,其他的全部使用百分号与十六进制码值进行编码。如在Chrome中地址栏输入“https://cn.bing.com/search?q=博客园”,则会自动解析为“https://cn.bing.com/search?q=%E5%8D%9A%E5%AE%A2%E5%9B%AD”

http请求发送过程

首先,用户在浏览器地址栏中输入URL并回车后浏览器会向HTTP服务器发送一个Request请求,服务器接收到请求后会返回一个Response文件对象给浏览器。此后浏览器分析Response中的HTML,同时发现其中所引用的其他文件(如Image、Js、CSS等),浏览器再次向服务器发送这些文件的request请求以下载文件。当所有文件成功下载完毕后,浏览器便可以将网页完整地构造显示出来。

如下为访问微软Bing主页的请求:

image_thumb[3]

请求方法

在HTTP协议中,定义了八种请求方法(参见下表)

   方法                                              描述
GET请求页面,并返回页面内容

HEAD

类似于GET请求,只不过返回的响应zho那个没有具体的内容,用于获取报头
POST大多用于提交表单或上传文件,数据包含在请求体中
PUT从客户端向服务器传送的数据取代指定文档中的内容
DELETE请求服务器删除指定的页面
CONNECT把服务器当作跳板,让服务器代替客户端访问其他网页
OPTIONS允许客户端查看服务器的性能
TRACE回显服务器收到的请求,主要用于测试或诊断

其中,GET与POST请求较为常用。一般情况下,GET仅用于获取数据,POST用于上传数据,但有时为应对反爬机制,需要用POST请求代替GET请求。

常用请求头参数

在HTTP协议中,请求头用来说明要传递给服务器使用的附加信息,如下为访问拉勾网的请求头。

image_thumb[6]

其中较为重要的参数有User-Agent、Referer 和 Cookie。

User-Agent:一个特殊字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在爬虫中可以设置此信息来伪装浏览器以反-反爬虫。

Referer:用于标识请求是从哪个页面来的。这个一般也可以用来做反爬虫技术——只有从指定页面请求才给予响应。

Cookie:HTTP协议无状态的,即服务器在两次连续的请求中不会保存是哪个用户发送的请求,而为了维持前后会话完整性,可以在发送请求时通过附加存储在用户本地的Cookie来让服务器识别出用户并查出当前状态。

响应

响应,由服务器返回给客户端,其中包括三部分内容——响应状态码、响应头和响应体。

1.响应状态码

用于表示服务器的相应状态,常用状态码有200(成功,服务器正常返回数据)、 301(永久重定向) 、302(临时重定向)、400(请求错误,服务器无法解析该请求)、403(禁止访问,服务器拒绝此请求)、404(未找到,服务器找不到请求的页面)、500(服务器内部错误)。

2.响应头

包含一些服务器对请求的应答信息,如Content-Type(应答的文档类型,如text/html返回HTML文档、image/jpeg返回图片)、Server(服务器信息,如名称、版本号等)、Set-Cookie(设置Cookies)、Expires(指定响应的过期时间)等。

如拉勾网响应头信息:

image_thumb[11]

3.响应体

表示响应的正文数据,如网页的HTML代码、图片的二进制数据等。爬虫请求网页后要解析的内容就是响应体内容。

转载于:https://www.cnblogs.com/Unikfox/p/9649149.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速上手SpyGlass——基本流程

SpyGlass,这是一个很强大的RTL验证级工具。它不仅仅能检查sdc的错误,还能做以下各种检查:Low Power, DFT,CDC(Cross Domain Check)。 一、基本概念 1、方法学相关 Rule: 是SpyGlass 进行RTL分析的最小单…

NAND FLASH ECC

NAND需要ECC以确保数据完整性。NAND闪存的每一个页面上都包括额外的存储空间,它就是64个字节的空闲区(每512字节的扇区有16字节)。该区能存储ECC代码及其它像磨损评级或逻辑到物理块映射之类的信息。ECC能在硬件或软件中执行,但是,硬件执行有…

快速上手SpyGlass——CDC检查

随着技术的发展,数字电路的集成度越来越高,设计也越来越复杂。很少有系统会只工作在同一个时钟频率。一个系统中往往会存在多个时钟,这些时钟之间有可能是同步的,也有可能是异步的。如果一个系统中,异步时钟之间存在信…

laravel session redis 设置

Laravel 在使用 Redis 作为 Session 驱动之前, 需要通过 Composer 安装 predis/predis 扩展包 (~1.0)。 当然也可以用原生自带的,具体使用见 https://laravel-china.org/docs/laravel/5.6/redis/1402#phpredis 操作即可。 然后在database 配置文件中配置…

数字后端——低功耗单元库

在之前的文章中,介绍了低功耗设计物理实施的方案: 数字后端——低功耗设计物理实施_沧海一升的博客-CSDN博客_低功耗设计低功耗设计方案所涉及到的物理实施相关内容https://blog.csdn.net/qq_21842097/article/details/119918312 为了实现例如门…

【CUDA开发】CUDA面内存拷贝用法总结

【CUDA开发】CUDA面内存拷贝用法总结 标签(空格分隔): 【CUDA开发】 主要是在调试CUDA硬解码并用D3D9或者D3D11显示的时候遇到了一些代码,如下所示: CUdeviceptr g_pRgba 0; CUDA_MEMCPY2D memcpy2D { 0 }; memcp…

PerfMon常用计数器

摘要: 故事来源于《sql server2012 深入解析和性能分析》 1.重要的PerfMon CPU计数器 计数器查看内容发生问题的条件Processor%Processor TimeCPU为生产环境的请求提供服务消耗的时间占总CPU时间的百分比>80%Processor%Privilege Time  CPU为内核模式请求提供服务消耗的时…

NandFlash详述

1. 硬件特性: 【Flash的硬件实现机制】 Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。这类设备,除了Flash,还有其他比较常见…

史上最全的MySQL高性能优化实战总结!

1.1 前言 MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器…

低功耗设计——基于UPF进行设计

UPF, 统一电源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的电源格式,是一组标准的类Tcl 语言的集合,用来描述芯片设计中的低功耗意图(Low-Power Design Intent)。 使用UPF 的语言,可以描述供电…

用公众号获取 任意公众号文章列表 软件还是免费

用公众号获取 任意公众号文章列表 软件还是免费还不快点下载 下载 地址 https://pan.baidu.com/s/1jI44Wjs转载于:https://www.cnblogs.com/wx85437898/p/7488590.html

CentOS7时间设置问题

本地安装一个VMWare player虚拟机客户端,并安装了Linux CentOS7 Basic Web Server系统,时区在安装时已经选择了Asia/Shanghai,但是安装完成后,时间和当前外部的时间不一致,如下图 图一 图二 图三 后经搜索发现,由于未开…

关于Nand ECC 错误

Nand flash ECC数据错误怎么办? 我编译过kernel 当时选了ECC校验 启动以后报错 去掉了,就不报错了 所以我会先考虑是不是这个问题 一般来说,硬件ECC校验出错可能性比较小吧? 我啥也不懂 -----摘自网络经典文章:“LINU…

低功耗设计——功耗估算

根据在功耗分析的过程中是否有输入向量的提供,功耗估算方法可以分为仿真的方法(Simulative)和非仿真的方法(Non-simulative): 仿真的方法是根据用户所提供的大量输入向量来对电路进行模拟,利用…

uboot 与系统内核中 MTD分区的关系

分类: Nand 驱动 2011-11-06 23:48 705人阅读 评论(2) 收藏 举报 uboot 与系统内核中 MTD分区的关系: 分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,等等。 1:在内核…

Deep Learning(深度学习)学习笔记整理系列三

Deep Learning(深度学习)学习笔记整理系列 声明: 1)该Deep Learning的学习系列是整理自网上很大牛和机器学习专家所无私奉献的资料的。具体引用的资料请看参考文献。具体的版本声明也参考原文献。 2)本文仅供学术交流&…

辗转相除法 求最大公约数和最小公倍数

# include<stdio.h> int main() { int a,b,c,x,y; printf("请输入两个正整数&#xff0c;用逗号间隔&#xff1a;"); scanf("%d,%d",&a,&b); xa; yb; if (a<b) { ca; ab;      //要保证 a>b bc; } while (b!0) { ca; ab; bc%b; …

Conformal ECO 流程介绍

之前听说过一句话&#xff0c;没有修过ECO的人生是不完整的。最近就给我整得再次完整了。。。。。。 最近赶项目&#xff0c;RTL freeze之后&#xff0c;后仿发现出了bug&#xff08;还好拦下来了&#xff0c;不然头更大&#xff09;&#xff0c;于是做了一次function ECO&…

最新天猫面试题(含总结):线程池+并发编程+分布式设计+中间件

最新天猫面试题&#xff08;含总结&#xff09;&#xff1a;线程池并发编程分布式设计中间件https://my.oschina.net/u/3892...

关于NAND flash的MTD分区与uboot中分区的理解 .

今天做内核移植&#xff0c;准备添加NAND flash的驱动&#xff0c;做到MTD分区时&#xff0c;想起在一本书上看到的一句话&#xff0c;说的是分区时每个区之间没有间隙&#xff0c;前一个区的结束地址是后一个区的起始地址。可是当我看我的开发板的教程时&#xff0c;分区如下&…