[2021年1月23日]
日志
今天上午完成了[第 46 天:Python 爬虫的终极利器 Selenium](https://github.com/jackfrued/Python-100-Days/blob/master/Day46-55/46.Python%E7%88%AC%E8%99%AB%E7%9A%84%E7%BB%88%E6%9E%81%E5%88%A9%E5%99%A8Selenium.md) 的学习,做了笔记,并完成了作业。
下午完成了[第 47 天:Scrapy 框架入门](https://github.com/jackfrued/Python-100-Days/blob/master/Day46-55/47.Scrapy%E6%A1%86%E6%9E%B6%E5%85%A5%E9%97%A8.md) 的学习,并完成了作业。
晚上完成了[第 48 天:前后端分离开发入门](https://github.com/jackfrued/Python-100-Days/blob/master/Day46-55/48.%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8.md) 的学习,并完成了作业。
笔记
第 46 天:Python 爬虫的终极利器 Selenium
Selenium 介绍
Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面源代码,做到可见即可爬。对于一些 JavaScript 动态渲染的页面来说,此种抓取方式非常有效。
准备工作
安装 Selenium 库和 ChromeDriver 驱动。
基本使用
声明浏览器对象
访问页面
查找节点
- 单个节点
- 多个节点
节点交互
- 输入文字:`send_keys()`
- 清空文字:`clear()`
- 点击按钮:`click()`
动作链
- 鼠标拖拽
- 键盘按键
执行 JavaScript
获取节点信息
- 获取属性
- 获取文本值
- 获取 ID、位置、标签名、大小
切换 Frame
延时等待
- 隐式等待
- 显式等待
前进和后退
Cookies
选项卡管理
异常处理
案例:动态渲染页面爬取
使用 Selenium 完成爬取淘宝商品信息。
第 47 天:Scrapy 框架入门
Scrapy 介绍
Scrapy 是一个为了爬取网站数据,*取结构性数据而编写的应用框架,非常出名,非常强悍。所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等)的具有很强通用性的项目模板。
准备工作
安装 Scrapy 框架。
基本使用
创建项目
明确目标
制作爬虫
- 爬数据
- 取数据
保存数据
第 48 天:前后端分离开发入门
前后端分离开发概述
在传统的 Web 应用开发中,大多数的程序员会将浏览器作为前后端的分界线。将浏览器中为用户进行页面展示的部分称之为前端,而将运行在服务器,为前端*供业务逻辑和数据准备的所有代码统称为后端。
前后端分离的开发思想就是“前端专注于页面呈现和用户体验,后端专注于业务逻辑和数据处理”,前后端通过接口(通常使用 HTTP 协议)进行通信。
返回 JSON 格式的数据
在 Django 项目中,如果希望处理请求的视图函数返回 JSON 格式的数据,可以借助 `JsonResponse` 类很方便的实现。
使用 Vue.js 渲染页面
Vue.js 是一套用于构建用户界面的渐进式 JavaScript 框架,可以轻松的为数据绑定 JavaScript 对象。
小结
至此,我们已经利用 Django 和 Vue.js 实现了一个前后端分离的项目,前端和后端运行在不同的服务器上,前端通过 Ajax 请求从后端获得数据,前端利用 Vue.js 将数据绑定到页面上。当然,我们还可以使用其他的前端框架(如:Angular、React 等)或自己编写原生的 JavaScript 代码来完成前端的开发工作,前端和后端之间通过 HTTP 请求(通常使用 JSON 格式的数据)进行通信,这也就是实现前后端分离的 MVC 模式(有的文献也称之为 MVVM 模式)的 Web 应用。
明日计划
完成[第 49 天:项目上线前的准备工作](https://github.com/jackfrued/Python-100-Days/blob/master/Day46-55/49.%E9%A1%B9%E7%9B%AE%E4%B8%8A%E7%BA%BF%E5%89%8D%E7%9A%84%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C.md) 的学习,并完成作业。
完成[第 50 天:Django 最佳实践](https://github.com/jackfrued/Python-100-Days/blob/master/Day46-55/50.Django%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md) 的学习,并完成作业。
|