声明:本文大部分内容来自21天搞定Python分布爬虫教学视频
url详解
URL
是Uniform Resource Locator
的简写,称为统一资源定位符。
一个URL由以下几部分组成:
scheme://host:port/path/?query-string=xxx#anchor
- sheme:访问的协议,一般为http、https、ftp
- host:主机名,域名,比如www.baidu.com
- port:端口号。当访问一个网站时,浏览器默认使用80端口
- path:查找路径。一个页面下的哪个目录,比如:
www.jianshu.com/trending/now
- query-string:查询字符串,比如:
www.baidu.com/s?wd=python
,后面的wd=python
就是查询字符串 - anchor:锚点,前端用来做页面定位的
在浏览器中请求一个url,浏览器会对这个url进行一个编码:除英文字母、数字和部分符号外,其余的均使用% + 十六进制码值
进行编码。比如当我在百度搜索刘德华时,wd字段如下:
而将该链接复制到txt文本文件中时,则变成了一串由% + 十六进制码值
组成的串:
常用的请求方法
在http
协议中,定义了8种请求方法。这里只介绍两种常用的请求:get
和post
请求
get
请求:一般情况下,只从服务器获取数据下来,并不会对服务器资源产生任何影响的时候会用到get
请求post
请求:向服务器发送数据(登录)、上传文件等,会对服务器资源产生影响的时候会使用post
请求
不过有的时候,有些网站和服务器会做反爬虫机制,比如将get
和post
请求的对应情景对调
常见响应状态码
200
:请求正常,服务器正常地返回数据。但是数据不一定正确301
:永久重定向。比如访问www.jingdong.com
时,会重定向到www.jd.com
302
:临时重定向。比如在访问一个需要登录的页面的时候,如果此时并没有登录,则会临时重定向到登录页面400
:请求的url在服务器上找不到。换句话说就是请求url错误403
:服务器拒绝访问,权限不够404
:请求失败,请求所希望得到的资源未被在服务器上发现500
:服务器内部错误。可能是服务器出现了bug