爬虫学习笔记(二)
引言
第二部分内容,主要是介绍一些爬虫原理以及网页的基础知识
1.HTTP原理
概念
1.URI,URL
uniform resource identifier,统一资源标志符
uniform resource locator,统一资源定位符
2.超文本hypertext
超链接文本
3.HTTP,HTTPS
hyper text transfer protocol,超文本传输协议http
将超文本数据从网络传输到本地的传送协议。
https,则是http的安全版本,加入了secure socket layer层,即ssl层。
2.http请求过程
客户端向服务器发送请求有4部分:请求方法(method),请求地址(url),请求头(header),请求体(body)
请求方法
get
url中包含请求参数;最多1024字节post
需要登陆之类的请求用post,由于数据通过表单传输,不会体现在url中;字节无限制
原因:需要登陆的包含用户账号密码等敏感信息,用get请求会暴露在url中;上传较大文件也用post请求。
请求地址
请求头
常用请求头:
1.host-主机ip和端口号
2.cookie-维持当前访问会话,比如每次等登陆状态服务器都能识别。
3.user-agent-服务器识别客户的操作系统、浏览器之类的版本信息。
4.content-type-互联网媒体类型,请求中的文件类型。
请求体
只用于post请求表单数据,get请求为空。
响应
1.响应状态码
表示服务器响应状态,200-正常,404-页面未找到,500-服务器内部错误
常见的响应错误及原因,可以参考这篇博文。
2.响应头
3.响应体
网页的源代码
2.网页基础知识
组成
主要有:html,css,javascript;分别对应-骨架、皮肤、肌肉
1.html
超文本标记语言(hyper text markup language),用于描述网页的语言
img-图片;video-视频,p-段落,div-布局标签。
关于html基础,可以参考这边w3school-html教程。
2.css
层叠式样式表(cascading style sheets),决定网页字大小、颜色、元素间距、排列等。
用link标签引入
3.javascript
帮助用户实现动态交互等页面功能,比如:下载进度条、提示框等。
用script标签引入。
所以html定义网页内容和结构,css描述网页布局,JavaScript定义网页行为。
结构
doctype-定义文档类型
html标签要闭合
定义了网页编码
一般结构是html标签嵌套head和body标签,head用于定义网页配置和引用,body用于定义网页正文。
节点树及节点间的关系
dom(document object model),文档对象模型。
节点树,节点关系-父(parent),子(child),兄弟(sibling)
href-属性、a-超链接
选择器
用于定位节点的工具
3.爬虫基本原理
javascript渲染页面
抓取页面时源码和浏览器内容不同,是由于网页使用ajax或者JavaScript渲染得到的。网页会先加载html,然后加载JavaScript代码,得到完整界面。
会话和cookies
静态和动态网页
静态:加载快、简单、可维护性差
动态:灵活多变
保持http连接状态
会话和cookies,cookies里保存了登陆凭着,下次请求携带cookies无需重新登陆。将登陆后获取的cookies放入请求头,可以直接请求。关于会话和cookies可以看这篇博文
- 会话机制:cookies在客户端记录信息,确定身份;session在服务器端记录信息,确定身份。
4.代理基本原理
使用代理可以伪装ip,防止由于单位时间内访问次数太大而被封ip的情况发生。
简言之就是客户端和服务器之间的中转站。