知识要点:
1.1 爬虫基本认知
1.2 网页基本认知
1.3 网页构成
1.4 XPath的基本使用
1.1 爬虫基本认知
爬虫:请求网站并提取数据的自动化程序。
爬虫的基本流程:
- 发起请求:发送一个Request
- 获取响应内容:得到一个Response,即要获取的页面内容
- 解析内容:用正则表方式,网页解析库进行解析
- 保存数据:可以存为文本,存至数据库或者指定格式的文件
1.2 网页基本认知
浏览器工作原理:浏览器发送消息给该网址所在的服务器,这个过程叫做 HTTP Request。
Request:是请求,在浏览器输入地址,回车,就是一个请求。
- 请求方式:主要有 get \post两种类型
- 请求的URL:全称统一资源定位符
- 请求头:包含请求时的头部信息
- 请求体:请求时额外携带的数据,如表单提交时的表单数据
Response:是响应,服务器根据请求,返回数据到浏览器显示,就是一个响应。
- 响应状态:有多种响应状态,如 200 代表成功、301跳转等
- 响应头:如内容类型、服务器信息、设置 Cookie 等等
- 响应体:最主要的部分,包含了请求资源的内容
网页数据类型:
- 网页文本:如 HTML 文档、Json 格式的文本等
- 图片:获取到的二进制文件,保存为图片格式
- 视频:获取到的二进制文件,保存为视频格式
网页的解析方式:
- 直接处理
- Json 解析
- BeartifulSoup
- PyQuery
- XPath
1.3 网页构成
网页构成:
标记符 说明 根元素 <doctype> 定义文档类型 <html> 定义 HTML 文档 元数据元素
<head> 定义关于文档的信息 <meta> 定义关于 HTML 文档的元数据 <link> 定义文档与外部资源之间的关系 <base> 定义页面上所有链接的默认地址或默认目标 <title> 定义文档标题 <style> 定义文档的样式信息 脚本元素 <script> 定义客户端脚本
<noscript> 定义当浏览器不支持脚本的时候所显示的内容 块元素 <body> 定义文档的主体 <h1>/<h2>...<h6> 定义文档标题 <p> 定义文档段落 <blockquote> 定义块引用 <ul>/<ul>/<dl> 定义列表 <table> 定义表格 列表标签 <ul> 定义无序列表 <li> 定义列表项 <ol> 定义有序列表 <dl> 定义定义列表 <dt> 定义定义术语 <dd> 定义定义描述 CSS 是一种定义样式结构如字体、颜色、位置等的语言,用于描述网页上的信息格式化和现实的方式;可以 直接存储于HTML网页或者单独的样式单文件。
- 内联方式:样式定义在单个的 HTML元素中
- 内部样式表:样式定义在 HTML 页的头元素中
- 外部样式表
- 将样式定义在一个外部的 CSS 文件中(.css 文件)
- 由 HTML 页面引用样式表文件
JS:一种脚本语言,被广泛用于Web应用开发,常用来为网页添加动态功能,为用户提供更流畅美观的浏览效果。
- JS 代码能直接嵌入网页的 任何地方
- 可以把代码单独的放在一个.JS 文件中,多个页面可以引用同一份 .js 文件
- 浏览器会按照顺序执行这些 JS 代码
1.4 XPath的基本使用
XPath 是一门在 XML 文档中查找信息的语言。 使用路径表达式来选取 XML 文档中的节点或者节点集。
注意: xpath速度比较快,是爬虫在网页定位中的较优选择,但是很多网页前端代码混乱难以定位。
安装: pip install lxmlXPath 的表达式:
表达式 描述 nodename 选取此节点的所有子节点 / 从根节点选择,路径的连接符 // 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 . 选取当前节点 .. 选取当前节点的父节点 @ 选取属性 通配符 描述
* 匹配任何元素节点
@* 匹配任何属性节点 node() 匹配任何类型节点