网站链接定位源码分享(链接定位网页版)

今天给各位分享网站链接定位源码分享的知识,其中也会对链接定位网页版进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

人生苦短,我用Python

前文传送门:

小白学Python爬虫(1):开篇

小白学Python爬虫(2):前置准备(一)基本类库的安装

小白学Python爬虫(3):前置准备(二)Linux基础入门

小白学Python爬虫(4):前置准备(三)Docker基础入门

小白学Python爬虫(5):前置准备(四)数据库基础

小白学Python爬虫(6):前置准备(五)爬虫框架的安装

网络的起源

这个其实是一个冷知识,各位同学可以猜测一下计算机网络的起源是在哪里。

硅谷?大学?实验室?有点接近了,但还不够准确。

准确的答案是在美苏冷战背景下的美国国防部

对的,你没看错,是美国军方,最先进的技术总是先应用于军事领域,随着时间的推移才会慢慢的民用化。

1968年,在美国国防部高级计划局的领导下,阿帕网(ARPANET)诞生了。

ARPANET只有四个节点,连接起加利福尼亚州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学这四所学校的大型计算机。

阿帕网,是全球公认的计算机网络的始祖。

URI、URL和URN

爬虫是一个模拟浏览器进行HTTP请求的过程。这就需要我们了解从浏览器输入URL到获取到网页中间究竟发生了什么。

先介绍一组概念,URI和URL:

URI=UniversalResourceIdentifier统一资源标志符,用来标识抽象或物理资源的一个紧凑字符串。URL=UniversalResourceLocator统一资源定位符,一种定位资源的主要访问机制的字符串,一个标准的URL必须包括:protocol、host、port、path、parameter、anchor。URN=UniversalResourceName统一资源名称,通过特定命名空间中的唯一名称或ID来标识资源。

没看懂是吧,没事儿,不需要懂,了解一下就好了,我们来举例子。

比如上面这张图片的地址:https://cdn.geekdigging.com/python-spider/uri-url-urn.png,它是一个URL同时也是一个URI,URL是URI的子集,也就是说每个URL都是URI,但不是每个URI都是URL,因为URI还包括一个子类叫URN。在目前的网络中URN的使用非常少,所以几乎所有的URI都是URL,一般的网页链接我们既可以称为URL,也可以称为URI,完全看个人喜好。

超文本

什么是超文本?

超文本是指可以链接到另一个文档或文本的单词,短语或大块文本。超文本涵盖了文本超链接和图形超链接。

我们在浏览器中访问的网页是由HTML编写而成,而HTML则被称作为“超文本标记语言”。在HTML代码中,包含了一系列的标签,包括图片等的超链接。

我们来看一下一个真实的网站的源代码是怎么样的,在Chrome浏览器中,使用F12打开开发者工具。

HTTP和HTTPS

什么是HTTP?

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

什么是HTTPS?

《图解HTTP》这本书中曾提过HTTPS是身披SSL外壳的HTTP。HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。

PS:TLS是传输层加密协议,前身是SSL协议,由网景公司1995年发布,有时候两者不区分。

现在越来越多的网站和App都已经向HTTPS方向发展,例如:

苹果公司强制所有iOSApp在2017年1月1日前全部改为使用HTTPS加密,否则App就无法在应用商店上架;谷歌从2017年1月推出的Chrome56开始,对未进行HTTPS加密的网址链接亮出风险提示,即在地址栏的显著位置提醒用户“此网页不安全”;腾讯微信小程序的官方需求文档要求后台使用HTTPS请求进行网络通信,不满足条件的域名和协议无法请求。

HTTP协议

HTTP协议本身是非常简单的。它规定,只能由客户端主动发起请求,服务器接收请求处理后返回响应结果,同时HTTP是一种无状态的协议,协议本身不记录客户端的历史请求记录。

为了比较直观的展示这个过程,我们依然打开Chrome浏览器,按F12开启开发者模式。

看第一行,www.geekdigging.com那一行:

Name:请求的名称。Status:状态码,200代表正常响应。Type:文旦类型,这里我们是请求了一个HTML文档。Initiator:请求源。用来标记请求是由哪个对象或进程发起的。Size:资源大小,这个标识了我们请求的资源的大小。Time:消耗的时间,单位是ms。Watefall:网络请求的可视化瀑布流。

我们点击一下那一行,可以看到更加详细的内容:

包含了Header头信息,Preview(ResponsePreview)响应信息预览,Response响应具体的HTML代码,Cookies,Timing整个请求周期耗时。

General部分:RequestURL为请求的URL,RequestMethod为请求的方法,StatusCode为响应状态码,RemoteAddress为远程服务器的地址和端口,ReferrerPolicy为Referrer判别策略。

Request请求

一个HTTP请求报文由请求行(requestline)、请求头部(headers)、空行(blankline)和请求数据(requestbody)4个部分组成。

请求行

分为三个部分:请求方法、请求地址URL和HTTP协议版本,它们之间用空格分割。

例如,GET/index.htmlHTTP/1.1。

HTTP/1.1定义的请求方法有8种:

GET:请求页面,并返回页面内容。POST:大多用于提交表单或上传文件,数据包含在请求体中。PUT:从客户端向服务器传送的数据取代指定文档中的内容。DELETE:请求服务器删除指定的页面。PATCH:是对PUT方法的补充,用来对已知资源进行局部更新。HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。OPTIONS:允许客户端查看服务器的性能。TRACE:回显服务器收到的请求,主要用于测试或诊断。CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

常用的有GET和POST。

GET

在浏览器中直接输入URL并回车,这就发起了一个GET请求,请求的参数会直接包含在URL里,请求参数和对应的值附加在URL后面,利用一个问号?代表URL的结尾与请求参数的开始,传递参数长度受限制。由于不同的浏览器对地址的字符限制也有所不同,一般最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合使用GET方式。

POST

允许客户端给服务器提供信息较多。POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。

请求头

因为请求行所携带的信息量非常有限,以至于客户端还有很多想向服务器要说的事情不得不放在请求首部(Header),请求首部用于给服务器提供一些额外的信息,比如User-Agent用来表明客户端的身份,让服务器知道你是来自浏览器的请求还是爬虫,是来自Chrome浏览器还是FireFox。HTTP/1.1规定了47种首部字段类型。HTTP首部字段的格式很像Python中的字典类型,由键值对组成,中间用冒号隔开。

下面简要说明一些常用的头信息。

Accept:请求报头域,用于指定客户端可接受哪些类型的信息。Accept-Language:指定客户端可接受的语言类型。Accept-Encoding:指定客户端可接受的内容编码。Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置。从HTTP1.1版本开始,请求必须包含此内容。Cookie:也常用复数形式Cookies,这是网站为了辨别用户进行会话跟踪而存储在用户本地的数据。它的主要功能是维持当前访问会话。例如,我们输入用户名和密码成功登录某个网站后,服务器会用会话保存登录状态信息,后面我们每次刷新或请求该站点的其他页面时,会发现都是登录状态,这就是Cookies的功劳。Cookies里有信息标识了我们所对应的服务器的会话,每次浏览器在请求该站点的页面时,都会在请求头中加上Cookies并将其发送给服务器,服务器通过Cookies识别出是我们自己,并且查出当前状态是登录状态,所以返回结果就是登录之后才能看到的网页内容。Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如作来源统计、防盗链处理等。User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本、浏览器及版本等信息。在做爬虫时加上此信息,可以伪装为浏览器;如果不加,很可能会被识别出为爬虫。Content-Type:也叫互联网媒体类型(InternetMediaType)或者MIME类型,在HTTP协议消息头中,它用来表示具体请求中的媒体类型信息。例如,text/html代表HTML格式,image/gif代表GIF图片,application/json代表JSON类型,更多对应关系可以查看此对照表:http://tool.oschina.net/commons。

请求数据

请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体则为空。

注意这里提交数据的方式和请求头设置的Content-Type息息相关。

Response响应

服务端接收请求并处理后,返回响应内容给客户端,同样地,响应内容也必须遵循固定的格式浏览器才能正确解析。HTTP响应也由3部分组成,分别是:响应行、响应首部、响应体,与HTTP的请求格式是相对应的。

响应行

响应行同样也是3部分组成,由服务端支持的HTTP协议版本号、状态码、以及对状态码的简短原因描述组成。

状态码

响应状态码表示服务器的响应状态,常见的如200代表服务器正常响应,404代表页面未找到,500代表服务器内部发生错误。

响应头

响应头包含了服务器对请求的应答信息,如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:指定响应的过期时间,可以使代理服务器或浏览器将加载的内容更新到缓存中。如果再次访问时,就可以直接从缓存中加载,降低服务器负载,缩短加载时间。

响应体

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

在做爬虫时,我们主要通过响应体得到网页的源代码、JSON数据等,然后从中做相应内容的提取。

参考

https://blog.csdn.net/koflance/article/details/79635240

https://blog.csdn.net/xiaoming100001/article/details/81109617

https://cuiqingcai.com/5465.html

https://blog.csdn.net/ailunlee/article/details/90600174

网站链接定位源码分享的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于链接定位网页版、网站链接定位源码分享的信息别忘了在本站进行查找哦。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平