在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
说明:本文参照Simon Munzert著&吴今朝译的《基于R语言的自动数据收集》一书,进行个人二次整合而成,如有侵权,告知后删。 同步转载至个人公众号:R语言学习 同步转载至个人知乎专栏:R数据处理 (一)HTTP基础知识 1、HTTP定义 HTTP(HyperText Transfer Protocol)意为超文本协议,本质上是网络客户端(如浏览器)和服务器(对请求进行响应的计算机)之间进行通信的协议,通信内容包括客户端从服务器获取几乎任何类型的资源(如文本、图片、音频、视频),还包括客户端向服务器发送各类型数据。 2、HTTP通信流程 (图为书中内容整理) 通信流程说明: ①用户首先通过鼠标/键盘点击或手动输入目标链接(即URL(Uniform Resource Locators),中文名称:统一资源定位符),向HTTP客户端(如常见的浏览器)传达数据查询需求。 ②HTTP客户端收到需求后,将收到的URL信息向DNS服务器(域名系统)询问链接对应的具体IP地址,DNS服务器返回URL对应的IP地址。 ③HTTP客户端再拿着IP地址通过TCP协议(传输控制协议,Transmission Control Protocol)和IP协议(Internet Protocol)向HTTP服务器发出数据请求,等待服务器响应。 ④HTTP服务器将请求的相关信息返回给HTTP客户端,由客户端返回给客户。 ⑤重复上述步骤①~④,直到所有请求执行完毕。 3、HTTP特点 HTTP是一个无状态协议。 这意味着,如果没有其他手段,客户端与服务器之间的每个请求-响应的来回,都会被默认当作首次交互来处理。 4、URL语法 4.1 URL格式 scheme://hostname:port/path?querystring#fragment 可见,一个完整的URL共有6部分构成,但是并不是每个部分都一定要具备。 例:https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1526179817032_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E6%B5%B7%E6%BB%A9 参数解释: scheme:模式名,这里我们的模式为https hostname:主机名,表示存放了我们需要的资源的主机名字,示例中的主机名为image.baidu.com,需要使用DNS域名系统将其转换为IP地址。 port:为TCP(传输控制协议)端口,不特别注明的情况下,默认端口为80。 path:为文件在主机中存放的路径,结构同普通文件路径一致。示例的路径为:search/index。 querystring:为查询字符串,通常格式为:name=value,一个URL钟可以有一个或多个查询字符串,多个查询字符串之间需要用&符号进行连接,示例中,我们共有23个查询字符串,均使用&符号连接。 fragment:为分段符,主要用于文档内容进行分段查询与显示,如http://www.w3.org:80/People/Berners-Lee/#Bio,表示直接查询文档中Bio部分,即人物传记部分。 4.2 URL编码规则 URL通过ASCII字符集传输,由于ASCII字符集仅有128个字符,所有不包含在该字符集中的字符(主要是特殊字符)都需要转义,即用标准表示法替代,如果直接输入未经转义的字符,则会报错。 例:在ASCII中,英文冒号的表示方式为“%3a” 更多字符转义方式请参见:http://www.w3school.com.cn/tags/html_ref_urlencode.html 5、HTTP消息-请求模式 请求模式 示例 (图为书中内容整理) 参数解释: 5.1 起始行 顾名思义,起始行是每个HTTP消息的第一行,在起始行中,我们定义了请求方法,即参数[method],定义了请求路径,即参数[path],还申明了客户端(主要是浏览器)能理解的HTTP最高版本,即参数[version]。 结合示例来看,①我们的请求模式为POST,该模式表示“利用正文消息向服务器发送数据/文件,从服务器检索资源”,关键点是向服务器主动发送数据再进行检索,而不是简单的查询。 ②示例中请求路径为”/greetings.html ”。③申明了客户端能理解的HTTP最高版本为HTTP/1.1,即HTTP的1.1版。 5.1.1常用的请求方法
5.2 标头 请求模式中的标头为客户端和服务器提供了元信息,定义了服务器接到请求后需要采取的行动,主要包括一些首选项和随消息一起发送的内容设置。 我们可以通过设置标头字段实现个性化的请求,标头字段格式: [header name:] [header value] 即:标头名称:标头取值 示例请求中,Host: www.r-datacollection.com,其中Host为标头名称, www.r-datacollection.com为标头取值,即主机名。标头Host是HTTP/1.1版本需要用到的标头字段,在多个主机名重定向到同一个IP地址时,它能帮助服务器决定使用哪个URL。 5.2.1 常见的请求标头
6、HTTP消息-响应模式 待更。 (尊重劳动成果,转载请注明出处) |
请发表评论