知识要点:
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 lxml
XPath 的表达式:
表达式 | 描述 |
nodename | 选取此节点的所有子节点 |
/ | 从根节点选择,路径的连接符 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
通配符 |
描述 |
* |
匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型节点 |
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试