爬虫 - 基础类总集
URL
URL是什么
URL是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎处理它
URL的构成
URL 遵守一种标准的语法,它由协议、主机名、域名、端口、路径、以及文件名这六个部分构成,其中端口可以省略。具体语法规则如下:
-
协议
协议用来指明客户端和服务器之间通信的类型。我们经常用到的协议有四种:http、https、ftp 以及 file -
主机名
主机名可以向浏览器提供文件站点的名称。www 是我们常见的主机名,例如百度的网址 https://www.baidu.com/、淘宝的网址 https://www.baidu.com/ 使用的都是 www 的主机名。除此之外,还有很多网站使用的是其它主机名 -
域名
域名和主机名一起使用,被用来定义服务器的地址。Web 服务器遵守数字网际协议(Internet Protocol,IP),每一台连接到因特网的计算机都有一个固定的 IP 地址。域名即 IP 地址的别名,因为一般的 IP 地址都是长串的数字,为了方便记忆所以使用域名进行替代。简单来说,没有域名(IP)我们就不能上网。 -
端口
端口用来定义主机上的端口号。如果不写,http 的默认端口号是 80,https 的默认端口号是 443,ftp 的默认端口号是 21 -
路径
路径指定服务器上文件的所在位置。就像我们自己在计算机上保存文件时所指定的文件夹一样,Web 服务器上的文件也有可能是存放在子目录(就是文件夹中的子文件夹)中的 -
文件名
文件名用来定义文档或资源的名称。和路径类似,路径指的是文件夹,而它指的是文件夹中的文件。网页文件的后缀有很多种,比如.html 、.php、 .jsp、.asp等
URL中常见符号解析
-
#
表示网页中的一个位置,被称之为锚点,常用于某个网页间不同位置的跳转,简单的说就是在一个网页中,URL 不变的情况下,通过添加“#buy”的字符在 URL 最后可以跳转到当前网页中已经定义好的锚点(id=”buy”)位置
同样#的改变也会增加浏览器的历史记录,也就是说我们可以通过“后退”按钮回到上一个位置 -
?
常用于动态网站,实现不同的参数值而生成不同的页面或者返回不同的结果
当然我们还常用的就是通过问号+任意参数来实现页面的刷新,从而获得最新的页面或者缓存的刷新 -
&
连接的作用,也可以说是不同参数的间隔符,一般与问号结合使用,一个动态 URL 链接中以问号开始第一个参数,同&连接符来串联多个参数和值。
HTTP和HTTPS
HTTP(Hyper Text Transfer Protocol,超文本传输协议
HTTPS(Hyper Text Transfer Protocol orer Secure Sokcket Layer,可以理解为HTTP+SSL/TLS
请求头
请求头描述客户端向服务器发送请求时使用的协议类型、所使用的编码以及发送内容的长度等;请求头的参数如下:
- Accept:text/html,image/*(浏览器可以接收的文件类型)。
- Accept-Charset:ISO-8859-1(浏览器可以接收的编码类型
- Accept-Encoding:gzip,compress(浏览器可以接收的压缩编码类型)
- Accept-Language:en-us,zh-cn(浏览器可以接收的语言和国家类型)
- Host:请求的主机地址和端口
- If-Modified-Since:Tue, 11 Jul 2000 18:23:51 GMT(某个页面的缓存时间)
- Referer:请求来自于哪个页面的URL
- User-Agent:Mozilla/4.0(compatible, MSIE 5.5,Windows NT 5.0,浏览器相关信息)
- Cookie:浏览器暂存服务器发送的信息
- Connection:close(1.0)/Keep-Alive(1.1)(HTTP请求版本的特点)
- Connection:close(1.0)/Keep-Alive(1.1)(HTTP请求版本的特点)
- Date:Tue, 11 Jul 2000 18:23:51 GMT(请求网站的时间)
在网络爬虫中,请求头一定要有User-Agent,其他的属性可以根据实际需求添加,因为反爬虫通常检测请求头的Referer和User-Agent,而Cookie不能添加到请求头
Cookies
Cookies也可以称为Cookie,指某些网站为了辨别用户身份、进行Session跟踪而储存在用户本地终端上的数据。Cookies最典型的应用是判定注册用户是否已经登录网站和保留用户信息以便简化登录手续。一般Cookies所具有的属性如下:
- Domain:域,表示当前Cookies属于哪个域或子域下面。
- Path:表示Cookies的所属路径
- Expire Time/Max-Age:表示Cookies的有效期。-
- Secure:表示该Cookies只能用HTTPS传输
- Httponly:表示此Cookies必须用HTTP或HTTPS传输。
- HasKeys:通过该值指示Cookie是否含有子键,返回一个bool值
- Name:表示Cookie的名称
- Value:单个Cookie的值
- Values:单个Cookie所包含的键值对的集合
Cookies的缺点如下- Cookie数量和长度的限制。每个domain最多只能有20条Cookie,每个Cookie长度不能超过4KB,否则会被截掉
- 安全性问题。如果Cookie被拦截,就有可能被取得所有的Session信息。
- 某些状态不可保存在客户端。例如,为了防止重复提交表单,需要在服务器端保存一个计数器。如果把这个计数器保存在客户端,那么它起不到任何作用
HTML
HTML是超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(Head)和“主体”部分(Body),其中“头”部分提供关于网页的信息,“主体”部分提供网页的具体内容
JavaScript
JavaScript是一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML网页上使用的,用来给HTML网页增加动态功能。
JSON
JSON(JavaScript Object Notation, JavaScript对象标记)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率.
在JavaScript语言中,一切都是对象,JSON格式说明如下:
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
Ajax
Ajax不是一种新的编程语言,而是一种用于创建更好、更快以及交互性更强的Web应用程序的技术。
使用JavaScript向服务器提出请求并处理响应而不阻塞用户,核心对象是XMLHTTPRequest。
通过这个对象,JavaScript可在不重载页面的情况下与Web服务器交换数据,即在不需要刷新页面的情况下就可以产生局部刷新的效果。
主要是前端数据加载和渲染技术,其响应内容大部分以JSON格式为主
判断网页数据是否使用Ajax最简单的方法是:触发事件之后,判断网页是否发生刷新状态。如果网页没有发生刷新,数据就自动生成,说明数据的加载是通过Ajax生成并渲染到网页上的;反之,数据是通过服务器后台生成并加载的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性