目录
本人非计算机专业,在空闲时总想学点有用的网络知识。由于完全出于兴趣,也就没什么规划,学到哪儿算哪儿吧。学习的时候不由感叹:计算机的术语真是铺天盖地。我习惯的理解方式是通俗化的,总结了一些经验记录在这里,还望各位批评指正。
1.HTTP基础
1.1 URL
像是现实生活中很多资源需要存放在仓库里,网络资源也是这样。网络仓库可能有以下几种名字:URI、URL、URN,其中URL就是我们说的网址。
它们三者的关系大概是这样的:
至于说它们究竟是什么,我一般把URL理解为房子,URL理解为房车;房子我总能找到它的位置,而房车可以到处移动,但我只要找到它的车牌号就可以找到它了。URI就是家,有人以房子为家,有人以房车为家,还有人两种家都有。
在互联网中,URN非常少,几乎所有的URI都是URL,就好像如果有人问你家在哪,一般指的是你的房子在哪一样。所以以后只记住URL是什么应该就够用了。
1.2 超文本
简单理解为源代码吧
1.3 HTTP和HTTPS
HTTP是一种协议,保证了网上的超文本文档高效又准确的传送到你的浏览器上,HTTPS则是HTTP的安全版。
1.4 请求
如果我想对一个URL做些什么事情,我得先向对方服务器发送一个请求。比如说,在浏览器输入网址并回车,就相当于向目标网站发送一个“我要访问”的请求;用爬虫程序获取目标网站的数据,也包含了一个“获取对方数据”的请求。
请求一般有四部分内容:请求方法,请求网址,请求体,请求头。
1.4.1 请求方法
常见的请求方法是GET和POST,它们的含义和区别如下
GET请求
- 用于从服务器获取数据,通常用于请求页面、图片或其他资源
- 长度限制在2KB到8KB之间,适合传输少量数据
- 可以被缓存,可以被书签收藏,可以被历史记录保存
- 显示,易获取qing
POST请求
- 用于向服务器提交数据,通常用于表单提交、文件上传等
- 没有长度限制,适合传输大量数据
- 不会被缓存,不会被书签收藏,不会被历史记录保存
- 不显示,安全
1.4.2 请求网址
请求的网址即目标URL
1.4.3 请求头
请求头的作用是让客户端可以向服务器传递一些额外的信息,以便服务器能够更好地理解和处理客户端的请求。
下面是一些常见的请求头
- Accept:指定客户端可以接受信息的类型
- Accept-Language:指定客户端能接受的语言类型
- Accept-Encoding:指定客户端能接受的编码类型
- Host:服务器可能有多个网站,Host会告诉服务器请求的是哪个具体的网站、域名或虚拟机;是必需的请求头
- Cookies:服务器存储在用户本地的数据;可以跟踪用户的会话状态(用于保持登录状态,购物车的保存),储存用户的偏好设置(语言偏好,主题偏好等),储存认证信息(登录过的网站隔一段时间再进入会自动登录),跨站点跟踪(跟踪用户在不同网站的活动,进行个性化广告推荐)
- Referer:告诉服务器客户端是谁,可以帮助服务器做数据统计
- User-Agent:简称UA,可以给爬虫作伪装,防止被检测出来
- Content-Type:告诉服务器或客户端发送的数据是什么格式,什么编码
1.4.4 请求体
请求体一般承载的是POST请求的表单数据,对于GET请求,请求体为空
1.5 响应
发出了一个请求,自然得有回应,服务器发出的回应叫“响应”。
响应一般有三部分内容:响应状态码,响应头,响应体
1.5.1 响应状态码
顾名思义,响应状态码表示了响应状态,最经典的例子就是状态码404表示页面找不到(404 NOT FOUND),除此之外,还有200代表正常响应,500代表服务器内部有问题。一般状态码为2打头的表示正常,3打头表示你要改变一些操作,4打头的表示你的请求有问题,5打头表示服务器本身有问题。
常见的响应状态码和含义如下,不用全记住,用的时候查询即可
状态码 | 含义 |
---|---|
100 |
服务器已收到请求的一部分,正在等待其余部分,请求者应当继续提出请求。
|
101 |
请求者已要求服务器切换协议,服务器已确认并准备切换
|
200 |
服务器已成功处理请求
|
201
|
请求成功并且服务器创建了新的资源
|
202 |
服务器已接受请求,但尚未处理
|
203 |
服务器已成功处理了请求,但返回的信息可能来自另一个源
|
204 |
服务器成功处理了请求,但没有返回任何内容
|
205 |
服务器成功处理了请求,内容被重置
|
206 |
服务器成功处理了部分请求
|
300 |
针对请求,服务器可执行多种操作
|
301 |
请求的网页已永久移动到新位置,即永久重定向
|
302 |
请求的网页暂时跳转到其他页面,即暂时重定向
|
303 |
如果原来的请求是POST,重定向目标文档应该通过GET提取
|
304 |
此次请求返回的网页未修改,继续使用上次的资源
|
305 |
请求者应该使用代理访问该网页
|
307 |
请求的资源临时从其他位置响应
|
400 |
服
务
器
无
法
解析该
请求
|
401 |
请求没有进行身份验证或验证未通过
|
403 |
服务器拒绝此请求
|
404 |
服务器找不到请求的网页
|
405 |
服务器禁用了请求中指定的方法
|
406 |
无法使用请求的内容响应请求的网页
|
407 |
请求者需要使用代理授权
|
408 |
服
务
器
请
求
超时
|
409 |
服
务器
在
完
成
请求
时发
生
冲突
|
410 |
请求
的
资
源
已
永
久
删
除
|
411 |
服务器不接受不含有效内容长度标头字段的请求
|
412 |
服务器未满足请求者在请求中设置的其中一个前提条件
|
413 |
请求实体过大,超出服务器的处理能力
|
414 |
请求网址过长,服务器无法处理
|
415 |
请求格式不被请求页面支持
|
416 |
页面无法提供请求的范围
|
417 |
服务器未满足期望请求标头字段的要求
|
500 |
服务器遇到错误,无法完成请求
|
501 |
服务器不具备完成请求的功能
|
502 |
服务器作为网关或代理,从上游服务器收到无效响应
|
503 |
服务器目前无法使用
|
504 |
服务器作为网关或代理,但是没有及时从上游服务器收到请求
|
505 |
服务器不支持请求中所用的HTTP协议版本
|
1.5.2 响应头
服务器对请求的应答信息
1.5.3 响应体
最重要也最主要的部分,包含了我们需要的数据;用爬虫获取响应后要获取信息的主要来源就是响应体。例如:网页的源代码。
2. 网页基础
网页主要分为三部分:HTML,CSS和JavaScript(这和Java没什么关系),分别可以理解为网页的骨骼、皮肤和肌肉
2.1 HTML
HTML,中文叫超文本标记语言,由一系列的标签组成,标签之间的排列、嵌套可以表示各种结构和内容。标签也可以称为节点,标签之间的关系称为节点树。
每个标签的结构大致都是
<p>这是一个段落</p>
其中<p>是开始标签,</p>是结束标签,“这是一个段落”是标签的内容;在开始标签<p>里,p后可加空格和一些其他的东西,用以表示标签的属性,例如
<a href="https://www.example.com">链接</a>
2.2 CSS
CSS,中文叫做层叠样式表,可以让你的网页更好看
2.3 JavaScript
JavaScript,简称JS,是一种脚本语言,可以让网页产生交互和动画效果,让网页动起来
如果感兴趣,不妨复制以下代码,写一个html文件,保存到本地并打开
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>This is a Demo</title>
</head>
<body>
<div id= "container">
<div class = "rapper">
<h2 class ="title">Hello World</h2>
<p class = "text"> Hello,this is a paragraph.</p>
</div>
</div>
</body>
</html>
结果预览
2.4 定位节点
写代码时,可以根据节点的属性(如id、class……),节点名称来确定节点的位置;方法是通过一定的语法规则,去表示我们目标节点的属性,名称等信息;这种语法规则称为选择器。
比如说:
- .title表示选择所有class="title"的节点
- #container表示选择所有id="container"的节点
以后用到相应的选择器再进行练习,不在此罗列了
3.参考书籍
python3 网络爬虫开发实战,崔庆才著