![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
训练营
文章平均质量分 50
训练营课堂笔记
Super-Coding
长风破浪会有时,直挂云帆济沧海
展开
-
【第十五周 第 2 节】Django实战(一)
第十五周-第二节课选择hexo模板https://hexo.io/themes/创建开发环境创建虚拟环境安装依赖批量导出安装的第三方库pip freeze >> requirements.txt批量安装第三方库pip install -r requirements.txt静态资源前端框架最终都会转为HTML, CSS, JS的形式在浏览器中完成渲染我们只要自定义静态资源中的内容九可以达到自动博客主题的目的在settings中配置静原创 2021-05-08 22:05:12 · 77 阅读 · 0 评论 -
【第十五周】第 1 节:Django视图
第十五周-第一节课DEBUGURL配置当接收一个HttpRequest对象时, django会自上而下地寻找urlpatterns进行匹配起点就是ROOT_URLCONF中设置的路径urlpatterns它是 django.urls.path() 和(或) django.urls.re_path() 实例的序列urlpatterns = [ path('polls/', include("polls.urls")), path('admin/', admin.site.原创 2021-05-07 23:14:24 · 50 阅读 · 0 评论 -
【第十四周 第 3 节】模型层(三)
第十四周-第三节课django.setup()import osimport randomimport djangodef create_reader(): for i in range(10): reader = Reader( name=f'name_{i}', email=f'email_{i}@163.com', null_test=None, blank_test=原创 2021-05-05 22:03:43 · 87 阅读 · 0 评论 -
【第十四周 第 2 节】模型层(二)
第十四周-第二节课内嵌类Meta通过一个内嵌类Meta来定义元数据, 元数据又被称为中介数据, 用于描述数据得数据.简单地讲, Meta就是通过属性来描述model对象, 为其提供额外得功能.abstract将当前模型类转换成抽象类, 当进行migrate的时候会被忽略.因为migrate是对实体表进行修改, 而抽象是一个虚的概念, 所以不存在实体.app_label指定当前model从属于哪个已经注册的应用使用场景一般为应用只编写视图层来处理业务逻辑. 模型层统一由一个原创 2021-05-05 18:35:03 · 140 阅读 · 1 评论 -
【第十四周 第 1 节】:模型层(一)
第十四周-第一节课字段类型有限使用, 尽量使用和数据库一致的数据类型BooleanField代表true或者false, 也就是代表1和0;IntegerFieldBigIntFieldFloatFieldDecimalFieldCharField在mysql中对应的就是varchar, 所以必须指定长度name = models.CharField(max_length=200)TextField遇到大的文本和图片, 文件. 推荐做法是存当前原创 2021-05-05 17:15:37 · 70 阅读 · 0 评论 -
【第十三周 第 3 节】:django示例(二)
第十三周-第三节课遇到修改后模板文件没有变化的情况, 要想到去清除浏览器缓存.视图层返回类型简单文本文件htmlcssjs视频文件, 音频文件JSON数据格式路由配置URL匹配path('<int:question_id>/', views.detail, name='detail'),int表示类型question_id表示传递的参数名URL配置ROOT_URLCONF设置主URL配置文件.模板def index(r原创 2021-05-04 11:49:12 · 71 阅读 · 0 评论 -
【第十三周 第 2 节】:django示例(一)
第十三周-第二节课https://docs.djangoproject.com/zh-hans/2.0/intro/tutorial01/创建视图视图就是处理客户端请求的地方views.pydef index(request): """ request 就是作为参数传递进来的请求对象 :param request: :return: HttpResponse 处理完请求的返回对象 """ return HttpResponse("Hello wo原创 2021-05-04 10:40:08 · 64 阅读 · 0 评论 -
【第十三周 第 1 节】初识django
第十三周-第一节课https://docs.djangoproject.com/zh-hans/2.0/安装Djangopip install django==2.0# 下载比较慢的同学可以换个源下载pip install django==2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple创建项目django-admin startproject mysite# 创建虚拟环境cd mysitepython -m venv venv目原创 2021-05-03 18:37:02 · 86 阅读 · 0 评论 -
【第十二周第 3 节】:Selenium 基础(二)
第十二周-第三节课selenium配置execute_pathbrowser = webdriver.Chrome(executable_path=driver_path, chrome_options=chrome_options)chrome_optionschrome浏览器的配置对象https://peter.sh/experiments/chromium-command-line-switches/添加代理proxy = "127.0.0.1:8888"chrome原创 2021-05-03 18:06:22 · 307 阅读 · 1 评论 -
【第十二周第 2 节】:Selenium(一)
第十二周-第二节课Selenium简单介绍https://selenium-python.readthedocs.io/https://python-selenium-zh.readthedocs.io/zh_CN/latest/什么是selenium通过浏览器驱动来自动化操纵浏览器的工具selenium -> 传输指令 -> webdriver -> 转换指令 -> 浏览器webdriver的出现是为了兼容各语言各版本, 使java或者python都可以通过同原创 2021-04-28 22:02:38 · 164 阅读 · 1 评论 -
【第十一周第 1 节】:scrapy设置和中间件
第十一周-第一节课Scrapy的启动和debug命令行scrapy crawl jd_search启动脚本# 新建run.pyfrom scrapy import cmdlinecommand = "scrapy crawl jd_search".split()cmdline.execute(command)Scrapy Item只是对解析的结构化结果进行一个约束, 在到达pipeline前就可以检查出数据错误.Scrapy的设置*ROBOTTEXT_OBEY原创 2021-03-11 13:37:31 · 81 阅读 · 0 评论 -
【第十周第 3 节】:Scrapy基础(二)
第十周-第三节课Scrapy的启动和debug命令行scrapy crawl jd_search启动脚本# 新建run.pyfrom scrapy import cmdlinecommand = "scrapy crawl jd_search".split()cmdline.execute(command)Scrapy Item只是对解析的结构化结果进行一个约束, 在到达pipeline前就可以检查出数据错误.Scrapy的设置ROBOTTEXT_OBEY获原创 2021-03-08 18:01:45 · 54 阅读 · 0 评论 -
【第十周第 2 节】:Scrapy 基础(一)
第十周-第二节课Scrapy爬虫框架介绍文档英文文档中文文档什么是scrapy基于twisted搭建的异步爬虫框架.scrapy爬虫框架根据组件化设计理念和丰富的中间件, 使其成为了一个兼具高性能和高扩展的框架scrapy提供的主要功能具有优先级功能的调度器去重功能失败后的重试机制并发限制ip使用次数限制…scrapy的使用场景不适合scrapy项目的场景业务非常简单, 对性能要求也没有那么高, 那么我们写多进程, 多线程, 异步脚本即可.原创 2021-03-08 18:01:13 · 81 阅读 · 0 评论 -
【第十周第 1 节】:Python 的路径管理
第十周-第一节课路径管理路径绝对路径总是从根目录开始H:\PyCharmProjects\tutorials_2\jd_crawler\main.py相对路径jd_crawler\main.py.和...代表当前目录, ..代表父目录工作目录当前执行命令所在的目录# 将工作目录添加进当前的路径列表sys.path.append(os.getcwd())路径列表查看当前路径列表只有在路径列表当中的包和模块才可以导入和调用import sys原创 2021-03-02 22:33:03 · 101 阅读 · 0 评论 -
【第九周第 3 节】:第一个爬虫项目
第九周-第三节课一个小又全的爬虫项目任务生成者生成爬虫任务的组件, 最大的作用就是建立生产消费者模型, 将生产者和消费者剥离, 可以达到程序暂停重启的功能.配置文件当前爬虫项目的基础配置信息, 目的就是统一化配置, 避免重复修改.主函数/调度器以逻辑控制流协同各个组件, 完成爬取工作, 具有一定的调度功能下载器用来和目标服务器进行交互, 获取数据的组件解析器用来解析非结构化的页面内容, 获取想要的数据.存储器用来持久化解析后的数据数据库存为本地文件,原创 2021-02-28 18:18:14 · 68 阅读 · 0 评论 -
【第九周 第 2 节】:页面解析
第九周-第二节课css-selector尽量避免解析路径中包含位置信息chrome页面中内置了Jquery环境, 用$符号来表示直接定位元素通过id进行定位$("#id值")通过class进行定位$(".class值")通过属性名进行定位$("标签名[属性名='属性值']")$("ul[class='gl-warp clearfix']")获取兄弟节点获取当前节点的下一个节点dom提供的接口, 不属于css-selector语法t原创 2021-02-25 21:40:45 · 67 阅读 · 0 评论 -
【第九周第 1 节】:请求的组成和页面
第九周-第一节课一个请求的组成def request_jd(keyword): url = "https://search.jd.com/Search" params = { "keyword": keyword } headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.原创 2021-02-25 21:40:03 · 66 阅读 · 0 评论 -
【第八周】第 3 节:Mysql 基础(六)
第八周-第三节课用python连接数据库pymysqlpip install pymysql#如果让你装vs环境, 执行以下命令升级pip即可python -m pip install --upgrade pip连接数据库数据库设置MYSQL_CONF = { "host": "127.0.0.1", "user": "root", "password": "qwe369", "db": "test"}连接# 连接数据库mysql原创 2021-02-07 16:10:50 · 111 阅读 · 0 评论 -
【第八周】第 2 节:Mysql基础(五)
第八周-第二节课变量声明服务器系统变量通过@@来调用系统变量# 列出mysql所有系统变量SHOW VARIABLESSELECT @@date_format用户变量通过@来调用用户变量# 输出变量yesterdaySELECT @yesterday# 对变量yesterday进行赋值SET @yesterday=subdate(CURRENT_DATE, 1);# 日期的格式化SET @yesterday=DATE_FORMAT(@yesterday,原创 2021-02-07 16:10:17 · 51 阅读 · 0 评论 -
【第七周】第 3 节:mysql 基础(三)
第七周-第三节课创建表的时候尽量加上create_time字段, 为create_time设置默认值CURRENT_TIMESTAMPCRUD操作Create(增)单条插入INSERT INTO 表名(字段1, 字段2..) VALUES(值1, 值2)INSERT INTO class_1(name) VALUES('name_1')多条插入INSERT INTO 表名(字段1, 字段2..) VALUES(值1, 值2), (值1, 值2)Retrieve原创 2021-01-30 22:45:38 · 60 阅读 · 1 评论 -
【第七周】第 2 节:mysql基础(二)
第七周-第二节课常用的数据类型int数字范围-2**32 ~ 2**32-1bigint数字范围-2**63 ~ 2 ** 63-1floatfloat(m,d), 其中m表示的是有效位, d表示小数位有效位就是把当前的小数: 12345.12 转变成科学计数法: 1.234512 * 10**5m最大值为7doubledouble(m, d), 其中m表示的是有效位, d表示小数位m的最大值为15decimal涉及金额的时候使用decimal.doub原创 2021-01-29 07:55:34 · 162 阅读 · 1 评论 -
【第七周】第 1 节:mysql 基础(一)
第七周-第一节课数据库的基本介绍关系型数据库创建在关系模型基础上的数据库, 用来存储和管理结构化的数据.关系模型类似python中类class Student: def __init__(self, name, classes ...): self.name = name self.classes = classes def borrow(self, book): print(f"student {self.name} borrow {book.name}")cl原创 2021-01-26 22:51:25 · 69 阅读 · 0 评论 -
【第六周】第 3 节:抓包和模拟请求
第六周-第三节课抓包抓包其实就是中间人攻击, 只是我们会主动信任像fiddler这样的代理软件.对于服务端, 它伪装成客户端. 对于客户端, 它伪装成服务端.抓包软件Fiddlerhttps://www.telerik.com/fiddlerCharleswiresharkweb端抓包现代互联网环境几乎都是https协议的网站信任证书[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TpF2dyU5-1611412164258原创 2021-01-23 22:29:43 · 459 阅读 · 0 评论 -
【第六周】第 2 节:TCP/IP
第六周-第二节课理解TCP/IP协议什么是TCP/IP协议TCP/IP并不是单个协议, 而是指一组协议的集合, 所以TCP/IP也叫TCP/IP协议族.TCP/IP的作用起到了应用和硬件的之间承上启下的作用.手机的APP应用 -> 路由器 -> 光猫 -> 运营商网络 -> 互联网TCP/IP三次握手为了建立可靠的TCP连接, 尽可能地保证数据传输的正确性.三次握手的过程客户端向服务端发送带有SYN(同步序列编号)标识的数据包 -------原创 2021-01-21 22:06:54 · 73 阅读 · 0 评论 -
【第六周】第 1 节:五层协议
第六周-第一节课推荐书籍 <<图解TCP/IP>>输入网址后发生了什么输入url统一资源定位器uniform resource locatorurl组成https://www.baidu.com/协议://域名[:端口]/路径file:///H:/BaiduNetdiskDownload/url作用定位指定的资源.url是uri的一个子集, uri是唯一标识符的意思. 身份证可以是uri, 但不是url.DNS解析域名系统Dom原创 2021-01-20 22:35:23 · 78 阅读 · 0 评论 -
【第五周】第 3 节:协程
第五周-第三节课迭代器和生成器迭代器概念上: 迭代器可以用来表示一个数据流, 提供了数据的惰性返回功能(只有我们主动去使用next方法调用, 才会返回值).实现上: 实现了__next__接口的对象传统声明一个列表, 里面的元素会立即写进内存当中, 占用大量内存.迭代器可以一次只返回一个元素, 占用内存非常小, 在读取大文件和大的数据集合的时候特别有用通过iter方法返回一个迭代器对象# 两者实现的功能是一摸一样的l = list(range(10**7))l2 = iter原创 2021-01-17 20:55:31 · 81 阅读 · 0 评论 -
【第五周】第 2 节:线程和进程间通信
第五周-第二节课进程间通信(IPC)文件通过读写文件来进行变量, 数据, 信息的传递读写冲突两个进程同时进行写, 或者一个写一个读, 造成了冲突.解决读写冲突互斥锁from multiprocessing import Process, Lockdef save_to_file(index, lock): with lock: with open("test.log", "a", encoding="utf-8") as f:原创 2021-01-14 22:22:38 · 139 阅读 · 0 评论 -
【第五周】第 1 节:多进程和多线程
第五周-第一节课requests模块的介绍requests的作用通过python来模拟请求网址一个模拟请求由以下四个部分组成urlmethodbodyheaders模拟请求百度 没有安装requests库的同学, 在当前python环境下执行以下语句安装第三方库 pip install requests[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n9YcIb23-1610465457474)(https://i.im5i.com/2原创 2021-01-12 23:31:14 · 60 阅读 · 0 评论 -
【第四周】第 3 节:类与对象(二)
第四周-第三节课类属性和实例属性类属性通过类对象可以直接访问的属性抽象概念的固有属性, 要考虑当前抽象概念的普适性# 贴标签不是一个特别好的抽象, 原因他没有一个普适性class Developer: programing_language = None busy = True私有属性不希望外部更改, 只作用于类内部通过__变量名来声明私有属性class Lottery: __items = ["mac", "ipad", "iphone"]原创 2021-01-09 22:53:17 · 113 阅读 · 0 评论 -
【第四周】第 2 节:类与对象(一)
第四周-第二节课类的创建, 实例化, 初始化什么是类类就是拥有相同功能或者相同属性的对象集合类的创建object是所有类的基类class GoGamer(object): subject = 'go'print(GoGamer)类的实例化实例就是抽象概念的具象化kejie = GoGamer()print(kejie)类的初始化类创建一个新实例的时候会默认调用__init__这样一个特殊方法class GoGamer(object):原创 2021-01-07 22:42:16 · 73 阅读 · 0 评论 -
【第四周】第 1 节:时间模块
第四周-第一节课导入第三方模块导包的层级关系模块(module)以文件为载体, 包含各类对象包(package)以文件夹为载体, 包含了各类模块库(lib)包含了各类包import 库from 库/模块 import 模块/函数导包的命名冲突通过as这个关键词来给当前模块/函数取个别名from datetime import datetime as p_datetime时间模块time调用的都是系统级的接口, 提供时间的访问和转换的功能原创 2021-01-05 21:46:33 · 157 阅读 · 1 评论 -
【第三周】第 3 节:作用域与装饰器
第三周-第三节课作用域程序创建, 访问, 改变一个变量时, 都是在一个保存该变量的空间内进行, 这个空间被称为命名空间, 即作用域Built-in 内置可以在Python环境中的任何模块, 任意位置访问和调用Global 全局变量只作用于当前模块(可以理解为当前文件)可以简单地理解为定以在函数外的变量就是全局变量, 如果在函数体定义那就时局部变量.如何将局部变量变成全局变量?使用global关键字a = 1def foo(): global a原创 2021-01-03 12:45:42 · 100 阅读 · 0 评论 -
【第三周】第 2 节:Python函数进阶
第三周-第二节课重新认识函数内置函数认识Python自带的, 可全局调用的函数, 避免我们命名冲突导致了函数性状发生改变查看Python携带的内置函数from pprint import pprint# 格式化输出的库pprint(dir(__builtins__))常见的内置函数str>>> str(1.0)'1.0'int>>> int(1.0)1>>> int("1.0")Tracebac原创 2021-01-02 11:57:14 · 133 阅读 · 0 评论 -
【第三周】第 1 节:Python的逻辑控制与异常
第三周-第一节课Python的逻辑控制语句条件判断语句ifelifelsea = 50if a > 100: print("a 超过阈值")elif a == 50: print("a 只有阈值的一半")else: print("a 小于阈值")循环语句for遍历一个可迭代对象(暂时理解为list), 会影响相同作用域当中的变量l = [1, 2, 3, 4, 5, 6]e = 0for e in l:原创 2020-12-29 22:04:08 · 312 阅读 · 0 评论 -
【第二周】第三节:Python基础数据结构的CRUD
第二周-第三节课了解变量和引用变量简单地说就是指向了一个实体引用简单地说就是指向变量的变量>>> a = 1>>> b = a>>> id(a)1778508560>>> id(b)1778508560基础数据结构的CRUD操作List(列表)list中存的元素是引用create(增加)append末尾添加元素>>> l = []>>> id原创 2020-12-26 22:50:30 · 192 阅读 · 0 评论 -
【第二周】第二节:字符串和字节序列
第二周-第二节课字符串(字符序列)和字节序列字符由于历史原因, 将字符定义为unicode字符还不够准确, 但是未来字符的定义一定是unicode字符字节就是字符的二进制表现形式码位我们计算机显示的实际上是码位>>> '你好'.encode("unicode_escape").decode()'\\u4f60\\u597d'>>>>>> '\u4f60\u597d''你好'unicode标准中以4~6个十六进原创 2020-12-24 22:36:46 · 326 阅读 · 2 评论 -
【第二周】第一节:Python函数和运算符
第二周-第一节Python函数的基本介绍什么是函数?函数就是一段定义的流程:输入数据,得到结果。在现实生活中,函数可以体现在方方面面。对厨师来讲,每一个菜谱都是函数;对农民来讲,每一种种菜的方法都是函数;对建筑工人来讲,每一个结构的修建都是函数;对司机来讲,在不同路线上的驾驶方式也是函数。简单地说就是一个可以重复调用的代码片段。可以互相调用的代码片段函数的作用复用代码段Python中定义函数:def foo(arg): return "Hello" + str(原创 2020-12-22 22:30:35 · 116 阅读 · 0 评论 -
【第一周】第 3 节:Python基本数据类型和结构
第一周-第三节课-随堂笔记变量和赋值什么是变量一个实体的指代查看变量的内存地址id(x)变量赋值通过 = 来赋值a = 3被重新赋值后的值去哪了?被系统回收了Python的常量Python没有常量这个数据类型程序猿之间的约定,如果变量名为大写,则这个变量就是常量Python的六大基本数据类型强调基本的原因数据类型和数据结构指向的范围更加广泛,不要产生错误的认知,行成思维定式通过type()函数来查看当前变量的数据类型int (原创 2020-12-20 13:48:58 · 119 阅读 · 0 评论 -
第一周-第二节-Git使用
第一周-第二节课-随堂笔记什么是GIT?最强大的分布式****版本控制系统分布式分布式的意思就是大家fork之后的库, 就像细胞分裂一样, 彼此之间是平等, 可以互相合并代码.我们fork远程库之后, 当前这个库就已经属于我们自己了.* 为了教学方便, 我们人为地设置了码育谷远程库作为我们的主库.版本控制通过分支切换, 来完成对不同版本的代码控制我们日常工作中如何使用GIT?安装githttps://git-scm.com/download将git添加到环境变原创 2020-12-17 22:12:29 · 135 阅读 · 0 评论 -
第一周-第一节-Python基础
养成良好的学习习惯不要相信自己的记忆力, 做好笔记和文档typorahttps://typora.io/创建标题ctrl + 数字创建目录列表结构- + 空格创建代码块ctrl+shift+k科学的搜索习惯官方文档和github库https://docs.python.org/zh-cn/3.6/tutorial/index.htmlhttps://github.com/StackOverflow(英语比较好的同学)https:原创 2020-12-15 22:15:47 · 112 阅读 · 0 评论