【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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python爬虫与项目实战,网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。 随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,Yahoo!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如: (1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。 (2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。 (3)万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。 (4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。 网络爬虫 为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。 传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值