URL:统一资源定位符;URI:统一资源标志符。
URL是URI的子集,即每个URL都是一个URI,反之不一定成立。
URI还有一个子类是URN(统一资源名称),URN只命名资源不指定如何定位资源(URL指定如何定位资源),如urn:isbn:0451450523指定一本书的ISBN(唯一标识这本书),但没有指定在哪里定位这本书,这就是URN。
URN和URL都属于URI,且两者有交叉,但URN用的很少。
浏览器里看到的网页就是超文本解析而成的,其网页源代码是一系列HTML代码,浏览器解析HTML代码里的各种标签(img,p等)后,就形成我们平常看到的网页,网页的源代码HTML就可以称作超文本。
如按F12打开浏览器的开发者工具,在Elements选项卡即可看到当前网页的源代码,这些源代码就是超文本。
淘宝首页https://www.taobao.com/中,https就是协议类型,ftp,sftp,smb都是协议的类型。
目前广泛使用HTTP (超文本传输协议)1.1版本
HTTPS是以安全为目标的HTTP通道,简单讲就是HTTP的安全版,即HTTP下加入SSL层。
有些网站虽然使用了HTTPS协议,但还是会提示不安全,如12306网站提示“您的连接不是私密连接”。因为12306的CA证书是中国铁道部自行签发的,该证书不被CA机构信任,如果爬取这样的站点,要设置忽略证书的选项,否则提示SSL链接错误。
network面板中每一个条目代表一次发送请求和接受响应的过程。
第一列Name:请求的名称,一般URL的最后一部分内容当做名称
第二列Status:响应的状态码
第三列Type:请求的文本类型,document代表请求的是HTML文档,内容是一些HTML代码
第四列Initiator:请求源,标记请求由哪个对象或进程发起
第五列Size:从服务器下载的文件和请求的资源大小,from cache代表从缓存中取得资源
第六列Time:发起请求到获取响应所用的总时间
第七列Timeline-Start Time:可视化瀑布流
点击第一个条目www.baidu.com,再点击Headers,出现下图
General部分
Remote Address:远程服务器的地址和端口
Referrer Policy:Referrer判别策略
请求分为4部分:请求方法、请求网址、请求头、请求体
1.请求方法
常见的是GET(显示在URL中)和POST(不显示在URL中)
POST和GET的区别:
POST请求的URL中不会包含参数,参数通常以表单形式传输,包含在请求体中
GET请求提交的参数不能超过1024字节,POST没有限制
POST适合含敏感信息(如用户名和密码)的参数或文件内容较大的情况
2.请求网址略
3.请求头
说明服务器要使用的附加信息,如Cookie、Referer、User-Agent
4.请求体
对于GET请求头为空,POST承载表单数据
Content-Type—————————————————提交数据方式
·······························································································
application/x-www-form-urlencoded·······················表单数据
multipart/form-data·············································表单文件上传
application/json··················································序列化JSON数据
text/xml·····························································XML数据
·································································································
☆构造POST请求要一一对应,否则无法响应
响应分为3部分:响应状态码、响应头、响应体
1.响应状态码
常见错误代码及错误原因见《python3 网络爬虫开发实战》第85页
2.响应头
Content-Type:文档类型,指定返回的数据类型是什么
Expires:指定响应的过期时间
3.响应体
请求图片时,它的响应体就是图片的二进制数据,爬虫请求网页后,要解析的内容就是响应体。
Network下的Preview可以看到网页的源代码
☆网页源代码:审查元素Elements
☆request拉下来的网页:Network ——> Preview
是两回事