爬虫基础
-
HTTP基本原理
-
URI----UniformResource Identifier----统一资源标志符
-
统一资源标识符,用来唯一的标识一个资源
- 例如:https://www.cnblogs.com
-
-
URL---Universal Resource Locator---统一资源定位符
- 统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源
- 例如:https://www.cnblogs.com/liyihua/
-
Hypertext---超文本
- 网页源代码是一系列 HTML 代码,里面包含了一系列标签,如 img 显示图片,p 指定显示段落等,浏览器解析这些标签后便形成了我们平常看到的网页,而这网页的源代码HTML 就可以称作超文本
-
HTTP和HTTPS(简单的讲:HTTPS是HTTP的安全版)
- http是一种协议,全称超文本传输协议,所有的www文件都必须遵守这个标准
- https,是以安全为目的的http通道,简单讲是http的安全版
- 安全性:http不安全,https安全
- 加密:http无法加密,https加密传输
- 证书:http无需证书,https需证书
- http是一种协议,全称超文本传输协议,所有的www文件都必须遵守这个标准
-
HTTP请求过程
-
HTTPS请求过程
-
请求
-
请求方法---Request Method
- 常用方法:GET和POST
- GET :请求页面,并返回页面内容
- POST:大多用于提交表单或上传文件,数据包含在请求题中
- 常用方法:GET和POST
-
请求的网址---Request URL
- 请求的网址,即统一资源定位符,用 URL 可以唯一确定我们想请求的资源
- 请求的网址,即统一资源定位符,用 URL 可以唯一确定我们想请求的资源
-
请求头---Request Headers
- 用来说明服务器要使用的附加信息
- 用来说明服务器要使用的附加信息
-
请求体---Request Body
- 请求体一般承载的内容是POST请求中的表单数据,而对于GET请求,请求体则为空
-
-
-
-
响应
-
响应状态码---Response Status Code
- 例如:
307 临时重定向 请求的资源临时从其他位置响应。
400 错误请求 服务器无法解析该请求。
401 未授权 请求没有进行身份验证或验证未通过。
403 禁止访问 服务器拒绝此请求。
404 未找到 服务器找不到请求的网页。
405 方法禁用 服务器禁用了请求中指定的方法。
406 不接受 无法使用请求的内容响应请求的网页。
407 需要代理授权 请求者需要使用代理授权。
408 请求超时 服务器请求超时。
- 例如:
-
响应头---Response Headers
- 响应头包含了服务器对请求的应答信息
-
响应体---REsponse Body
- 最重要的当属响应体内容了,响应的正文数据都是在响应体中
- 例如:请求一个网页,它的响应体就是网页的 HTML 代码;请求一张图片,它的响应体就是图片的二进制数据。
-
-
-
网页基础
-
网页的组成
-
HTML 定义了网页的内容和结构, css 描述了网页的布局, JavaScript 定义了网页的行为 。
-
-
-
HTML---Hyper Text Markup Language---定义网页结构
- 描述网页的一种语言,即超文本标记语言。
-
CSS---CascadingStyle Sheets---层叠样式表
-
HTML 定义了网页的结构,但是只有 HTML 页面的布局并不美观,借助CSS,页面会变得更加美观、优雅。
-
-
JS---JavaScript(是一种脚本语言)
- 是一种动态类型、弱类型、基于原型的语言,内置支持类型
- 在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能
- 是一种动态类型、弱类型、基于原型的语言,内置支持类型
-
-
网页的结构
-
<!DOCTYPE html> # DOCTYPE 定义文档类型 <html> # html标签 <head> # 网页头:一些页面的配置和引用 <meta charset="UTF-8"> # 网页编码:UTF-8 <title>This is a Demo</title> # 定义网页标题 </ head> <body> # 网页体:在网页正文中显示的内容 <div id=”container”> # div标签:定义网页中的区块,它的id是container <div class="rapper”〉 # 它的class是wrapper <h2 class=”title”>Hello World</h2> # h2标签:二级标题 <p class=”text”>Hell口, this i s a paragraph.</p> # p标签:代表一个段落 </div> </div> </ body > </ html>
- 代码保存后,浏览器打开该文件。
-
-
节点树及节点之间的关系
- 在HTML中,所有标签定义的内容都是节点,它们构成了一个HTML DOM 树
- DOM---Document Object Model---文档对象模型
- DOM是W3C(万维网联盟)的标准
-
HTML DOM 将 HTML 文档视作树结构,这种结构被称为节点树
-
节点树中的节点彼此拥有层次关系(顶节点称为根--root)
- 父(parent)、子(child)、兄弟(sibling)
- 节点树及节点之间的关系
-
选择器
- 网页是由一个一个的节点组成的,CSS选择器会根据不同的节点设置不同的样式规则。
- CSS 中,选择器是一种模式,用于选择需要添加样式的元素
- 例如:
-
-
爬虫的基本原理
-
爬虫概述
-
1、获取网页---获取网页的源代码
-
2、提取信息:
- 1、通用方法:正则表达式
- 2、根据网页节点的属性:CSS选择器、XPath 来提取网页信息的库(例如:Beautiful Soup、pyquery、lxml等)
-
3、保存数据
- 提取信息后,保存到数据库,如MySQL和MongoDB等,也可以保存至远程服务器,如借助SFTP进行操作等
-
自动化程序---爬虫代替人完成操作
-
-
JavaScript渲染页面
- JavaScript会改变HTML中的节点,向其添加内容,最后得到完整的页面
- 使用urllib或requests等库请求当前页面时,得到的只是这个HTML代码。可使用Selenium、Splash这样的库来实现模拟JavaScript渲染。
-
-
会话(服务端) 和 Cookies(客户端) --- 保持 HTTP连接状态
-
静态网页
-
网页的内容是 HTML 代码编写的,文字、图片等内容均通过写好的 HTML 代码来指定 , 这种页面叫作静态网页
- 优点:加载速度快、编写简单
- 缺点:可维护性差 ,不能根据URL灵活多变地显示内容等
-
-
动态网页:页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。
-
无状态HTTP
-
HTTP 的无状态是指 HTTP 协议对事务处理是没有记忆能力的,也就是说服务器不知道客户端是什么状态 。
-
-
会话
-
其本来的含义是指有始有终的一系列动作/消息
-
在 Web 中,会话对象用来存储特定用户会话所需的属性及配置信息
-
-
Cookies
-
某些网站为了辨别用户身份 、 进行会话跟踪而存储在用户本地终端上的数据
-
-
会话维持---Cookies 和会话需要配合,一个处于客户端,一个处于服务端,二者共同协作,实现登录会话控制
-
属性结构
-
Cookie:
-
Name、Value、Domain、MaxAge、Path、Size字段、HTTP 字段、Secure
-
-
-
会话 Cookie和持久 Cookie
会话 Cookie就是把 Cookie放在浏览器内存里,浏览器在关闭之后该 Cookie 即失效 ; 持久 Cookie则会保存到客户端的硬盘中,下次还可以继续使用,用于长久保持用户登录状态
-
-
代理的基本原理
-
基本原理
- 代理服务器(proxy server)---实现IP伪装
- 功能:代理网络用户去取得网络信息---网络信息的中转站
- 在本机和服务器之间搭建一个桥,此时本机不是直接向Web服务器发起请求,而是向代理服务器发出请求
-
代理的作用
- 突破自身IP的访问限制
- 访问一些单位或团体的内部资源
- 提高访问速度
- 隐藏真实IP
-
爬虫代理
-
爬虫爬取速度过快,在爬取过程中可能遇到同一个 IP访问过于频繁的问题,此时网站就会让我们输入验证码登录或者直接封锁IP。
使用代理隐藏真实的 IP,让服务器误以为是代理服务器在请求向己。
在爬取过程中通过不断更换代理,就不会被封锁,可 以达到很好的爬取效果。
-
-
代理分类
-
1、根据协议区分-
FTP代理服务器、HTTP 代理服务器、SSL厅LS代理、RTSP 代理、Telnet代理、POP3/SMTP 代理、SOCKS 代理
-
-
2、根据匿名程度区分
-
高度匿名代理、普通匿名代理、透明代理、间谍代理
-
-
-
常见的代理设置
-
使用网上的免费代理、使用付费代理服务、ADSL 拨号
-
-