自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Python操作MySQL的应用

Python操作MySQL的应用一、添加用户及开放权限1.创建一个guest账户,添加权限的方法(一般不能开放root账户,因为root账户是最高权限,只需要开放用户需要使用的权限)-- 创建用户账号密码create user 'guest'@'10.7.174.%' identified by 'Guest.618';-- 增加查询权限grant select on hrs.* to 'guest'@'10.7.174.%';-- 增加插入权限grant insert on hrs.

2021-06-10 19:39:59 339 1

原创 MySQL的使用(二)

MySQL的使用使用SQL语句对school进行操作,school数据库建表语句如下:-- 如果存在名为school的数据库就删除它drop database if exists `school`;-- 创建名为school的数据库并设置默认的字符集和排序方式create database `school` default charset utf8mb4;-- 切换到school数据库上下文环境use `school`;-- 创建学院表create table `tb_college

2021-06-09 19:42:58 358

原创 MySQL的使用(一)

MySQL的使用一、建立一个学生选课系统数据库-- 如果存在名为school的数据库就删除它drop database if exists `school`;-- 创建名为school的数据库并设置默认的字符集和排序方式create database `school` default charset utf8mb4;-- 切换到school数据库上下文环境use `school`;-- 创建学院表create table `tb_college`(`col_id` int uns

2021-06-08 18:53:13 305

原创 数据库的基础知识

一、数据库的基础知识1.数据库:数据的仓库(集散地),它解决了数据持久化和数据管理的问题2.持久化 —> 将数据从内存转移到硬盘(可以长久保存数据的存储介质)3.数据库的分类:1972—> Codd —> 如何使用关系模型来保存大规模数据~关系型数据库 —>首选方案-理论基础:关系代数、集合论-具体表象:用二维表保存数据(行(记录)和列(字段))-编程语言:SQL(结构化查询语言)—> SQL方言~非关系型数据库~ NoSQL —> No SQL —&

2021-06-07 20:38:14 209

原创 常见反爬机制及其破解方法

常见反爬机制及其破解方法常见反爬机制及其破解方式:封禁IP,使用cookie等前面文章已经讲过现在主要将下面的:​ ~ 验证码​ —> 文字验证码 —> OCR(光学文字识别)—> 接口 / easyocr​ 程序自己解决不了的问题就可以考虑使用三方接口(付费/免费)​ —> 行为验证码 —> 超级鹰​ ~ 手机号+短信验证码​ —> 接码平台​ ~ 动态内容​

2021-06-07 20:22:13 1285 2

原创 多线程和多进程的使用

一、多线程的使用import requestsfrom lxml import etreefrom threading import Threadfrom datetime import datetimedef get_net_data(start): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chro

2021-06-04 15:21:50 176

原创 Python的excel文件操作及爬虫练习

一、Excel的写操作import openpyxl# 1.获取工作簿对象(工作簿对应的就是一个excel文件)# 新建(默认有一个工作表)# work_book = openpyxl.Workbook()# 打开# work_book = openpyxl.load_workbook(文件路径)# work_book = openpyxl.Workbook()work_book = openpyxl.load_workbook('files/test2.xlsx')# 2.获取所

2021-06-03 21:50:39 333

原创 Selenium使用方法

一、x-path练习:图片保存import requestsfrom lxml import etreeimport csvdef get_net_data(): url = 'https://www.umei.net/' response = requests.get(url) response.encoding = 'utf-8' print(response.text) return response.textdef download_imag

2021-06-03 21:02:26 802

原创 代理IP的使用与CSS选择器解析

day3-代理和css选择器解析库一、获取代理ipimport requestsdef get_proxy_ips(): api = 'http://piping.mogumiao.com/proxy/api/get_ip_bs?appKey=3ee6f035175f4b508d8a825da0fb3833&count=4&expiryDate=0&format=2&newLine=3' response = requests.get(api)

2021-06-03 20:31:06 230

原创 解释器锁&线程池&异步

解释器锁&线程池&异步创建线程的三种方式:\1. 创建Thread对象 —> target / args —> start()\2. 继承Thread类 —> 重写run()方法 —> start()\3. 使用线程池(最佳选择)—> 减少频繁创建和释放线程造成的系统开销线程间的通信非常简单,可以通过共享内存来实现进程间的通信比较麻烦,因为进程间的内存是相互隔离的,需要使用管道、套接字等方式来通信多进程 —> 计算密集型任务 —> 科学

2021-06-03 20:20:51 148

原创 Day2 css选择器和requests

Day2 css选择器和requests一、css基本语法<!-- css负责网页内容的样式和布局css - 层叠样式表(简称:样式表) 1、css语法 语法: 选择器{属性名1:属性值1;属性名2:属性值2;...} 说明: 选择器 - 选中需要设置样式的标签 {} - 固定写法 属性名 - 决定需要设置哪些样式 属性值 - 如果是表示数值大小,数字值需要单位,一般是px 常用属性: color - 文字颜色(颜

2021-05-25 21:00:58 1804

原创 Day1 前端基础(爬虫)

Day1 前端基础(爬虫)一、常用标签1<!-- html版本说明 !DOCTYPE - 版本说明 html - html5(最新版本) --> <!DOCTYPE html> <!-- 1.网页基本结构: 整个网页是一个html标签。(有多少个网页就有多少个html标签,就有多少个html文件) 一个html标签里面有一个head标签和一个body标签。 head负责网页头部的显示 body负责网页内容的显示 -->

2021-05-25 20:46:53 251

原创 day19 PDF文件操作

day19 PDF文件操作一、pypdf2获取文件内容from PyPDF2 import PdfFileReader# 1.打开pdf文件f = open('files/流畅的python.pdf', 'rb')# 2.创建readerreader = PdfFileReader(f)# 3.获取页数page_total = reader.getNumPages()print(f'页数:{page_total}')# 4.获取指定页的页面page0 = reader.getP

2021-05-21 19:43:40 204

原创 day18继承和邮件自动发送

day18继承和邮件自动发送一、继承1.什么是继承继承就是让子类直接拥有父类的属性和方法。子类 - 继承者父类 - 被继承者2.继承的语法class 类名(父类1,父类2,…):pass定义类的时候如果没有写继承关系,那么这个类默认继承python的基类:objectclass 类名: == class 类名(object)子类继承父类的属性和方法class Person: num = 61 def __init__(self): self.

2021-05-21 19:35:13 180

原创 day 18 斗地主游戏(实现发牌功能)

day 18 作业写一个斗地主扑克游戏类import randomclass Cards: @staticmethod def pokers(): poker = [] list1 = list(range(2, 11)) + ['J', 'Q', 'K', 'A'] list2 = ['黑桃', '红桃', '方块', '梅花'] for x in list1: for y in list2:

2021-05-20 21:02:30 171 1

原创 day17 面向对象及作业

day17 面向对象一、类和对象1.定义类定义类用代码描述清楚你这个类是拥有哪些相同功能哪些相同属性的对象的集合。功能 - 对应的是函数属性 - 保存数据的变量(在类中叫属性)语法:class 类名:类的说明文档类的内容说明:class - 关键字,固定写法类名 - 程序员自己命名要求:是标识符,不是关键字规范:见名知义;驼峰式命名(第二个单词开始,单词之间采用首字母大写),首字母大写;不使用系统函数名、类名、模块名: - 固定写法类的说明文档 -

2021-05-19 19:28:58 184

原创 day16正则表达式作业

利用正则表达式完成下面的操作:一、不定项选择题能够完全匹配字符串"(010)-62661617"和字符串"01062661617"的正则表达式包括(A B D)A.r"\(?\d{3}\)?-?\d{8}" B. r"[0-9()-]+" C.r"[0-9(-)]*\d*" D.r"[(]?\d*[)-]*\d*"能够完全匹配字符串“back”和“back-end”的正则表达式包括(AB C)A. r“\w{4}-\w{3}|\w{4}” B. r“\w{4}|\w{4}-\w

2021-05-18 21:22:59 135

原创 day16-正则表达式和面向对象

day16-正则表达式和面向对象一、检测类符号1.\b - 检测是否是单词边界单词边界:凡是可以将两个单词分开的符号都是单词边界,比如:空白字符、标点符号对应的字符,字符串开头和结尾注意:检测类符号是在匹配成功的情况下看检测类符号所在的位置是否符合要求re_str = r'abc \b123'print(fullmatch(re_str, 'abc 123'))re_str = r'\b\d\d'result = findall(re_str, '99shj23结合实际 45 计时开始67

2021-05-18 17:59:37 256

原创 day14 异常捕获和文件操作

day14 异常捕获和文件操作一、hashlib的使用hash摘要(加密)的算法主要有两类:md5和sha-X系列1.hash加密的特点1)hash算法生产的摘要不可逆。(不能通过密文来获取原文)2)只有相同的数据通过相同算法得到的摘要才是一致的3)不管原数据多大,产生的摘要的大小(长度)一致2.生成hash摘要1)通过算法创建hash对象:hashlib.算法名()算法名:md5、shaXXXhash = hashlib.md5()2)添加数据hash对象.update(数据)

2021-05-17 19:11:07 117

原创 day15 json和异常捕获

day 15 json和异常捕获一.json数据1.什么是json数据json是一种通用的数据格式,主要用于不同语言之间的数据传输。json数据格式要求:1)有且只有一个数据2)唯一的这个数据必须是json支持的数据类型的数据json支持的数据类型:数字类型 - 包含所有的数字,表示的时候直接写,例如:90、12.3、-12、3e4字符串 - 用双引号引起来的数据(只能是双引号),例如:“你好”、“abc\n223”布尔 - 只有true和false两个值。表示的时

2021-05-17 18:29:58 171 1

原创 day14 -文件操作作业

文件操作作业学生管理系统登录页面while True: f = open('学生管理系统登陆页面.txt', encoding='utf-8') print(f.read()) choose1 = int(input('请选择:')) if choose1 == 2: user_name = input('请输入用户名:') password = input('请输入密码:') f1 = open('账号密码.txt', e

2021-05-15 17:44:40 138

原创 day13 包和模块

day13 包和模块一、模块的使用1,什么是模块python中一个py就是一个模块2.怎么在一个模块中使用另外一个模块中的内容(内容包括:数据、函数、类等)注意:1)如果要在一个模块中使用另外一个模块中的内容,被使用的模块名必须是标识符并且不是关键字2)一个模块中只有全局变量才能被其他模块使用3)其他模块只有在被导入以后才能被使用3.怎么导入模块import 模块名 - 导入指定模块,导入后可以通过‘模块名.变量’的方式使用被导入的模块中所有的全局变量2)from 模块名 imp

2021-05-14 19:39:48 173

原创 day12-三大神器作业

为函数写一个装饰器,在函数执行之后输出 afterdef add_after(fn): def new_fn(*args, **kwargs): result = fn(*args, **kwargs) print('after') return result return new_fn为函数写一个装饰器,把函数的返回值 乘2再返回值def multiply_2(fn): def new_fn(*args, **kwar..

2021-05-13 19:31:06 66

原创 day12-三大神器

day12-三大神器一、迭代器list1 = [19, 89, 78, 67]result = map(lambda item: item % 10, list1)print(result) # 迭代器,打印看不到元素print(list(result)) # 取出来转换成列表print(list(result)) # 取出来用了后元素就没有了,不会再放回去1.什么是迭代器(iter)迭代器是容器型数据类型(序列),迭代器无法直接获取所有元素,也不能统计元素个数。获取迭代器中的元

2021-05-13 17:33:19 132

原创 day11-实参高阶函数作业

已经列表points中保存的是每个点的坐标(坐标是用元组表示的,第一个值是x坐标,第二个值是y坐标)points = [ (10, 20), (0, 100), (20, 30), (-10, 20), (30, -100)]以下问题使用实参高阶函数来解决1)获取列表中y坐标最大的点points = [(10, 20), (0, 100), (20, 30), (-10, 20), (30, -100)]result = max(points, key=lambda item: ite..

2021-05-12 19:43:47 145

原创 day11 函数高阶

day11 函数高阶一、匿名函数1.匿名函数 - 没有函数名的函数函数名 = lambda 形参列表:返回值相当于:def 函数名(形参列表):return 返回值注意:匿名的本质还是函数,之前函数中除了定义函数的语法以外的内容都适用于匿名函数# 求两个数的和的匿名函数sum1 = lambda num1, num2: num1 + num2print(sum1(10, 20))# 练习:写一个匿名函数判断指定的年是否是闰年is_leap_year = lambda year:

2021-05-12 19:41:38 80

原创 day10函数作业

1.编写一个函数,计算一个整数的各位数的平方和# 例如: sum1(12) -> 5(1的平方加上2的平方) sum1(123) -> 14def sum_squares(num1:int): sum1 = 0 for x in str(num1): sum1 += int(x)**2 return sum1print(sum_squares(12))print(sum_squares(123)) 写一个函数,求一个数字列表中绝对值

2021-05-11 20:58:09 165

原创 day10 函数进阶

day10 函数进阶一、函数的参数1.位置参数和关键字参数根据实参的提供是不同将实参分为位置参数和关键字参数1)位置参数:调用函数的时候让实参和形参在位置上一一对应2)关键字参数:调用函数的时候以‘形参名=值’的形式确定形参对应的实参。3)位置参数和关键字参数混用:位置参数必须在关键字参数前面,同时必须保证每个参数都会有一次赋值def func1(x, y, z): print(f'x:{x}, y:{y}, z:{z}')# 位置参数func1(10, 20, 30)fun

2021-05-11 17:49:35 98

原创 day9-函数作业

编写一个函数,交换指定字典的key和value。# 例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'} def change_key_value(dict1): """ 交换字典的key和value的值 :param dict1: 需要交换值得字典 :return: None """ dict2 = {} for x in dict1: dic..

2021-05-10 20:25:40 146

原创 day9-格式字符串和函数基础

day9-格式字符串和函数基础一、格式字符串name = '张三'age = 18# ‘xxx今年xx岁’message = name + '今年' + str(age) + '岁'print(message) # 张三今年18岁1.格式化字符串:格式占位符语法:包含格式占位符的字符串 % (数据1,数据2,…)说明:括号中数据的个数需要与格式占位符的个数保持一致格式占位符:%s - 字符串(任何类型的数据)%d - 整数%f - 浮点数;%.Nf - 保留N位小数

2021-05-10 17:27:01 127

原创 周末作业-循环练习题

判断101-200之间有多少个素数,并输出所有素数。count = 0for num in range(101, 200): for x in range(2, num): if num % x == 0: break else: count += 1 print(num)print(count, '个')求整数1~100的累加值,但要求跳过所有个位为3的数。sum1 = 0for x in ran..

2021-05-09 11:10:23 149

原创 day8-字符串作业

输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7…位上的字符)例如: 输入**'abcd1234 ’ ** 输出**‘bd24’**str1 = input('请输入一个字符串:')result = ''.join([str1[x] for x in range(1, len(str1), 2)])print(result)输入用户名,判断用户名是否合法(用户名长度6~10位)username = input('请输入用户名:')if 6 <= len(usern..

2021-05-09 10:31:28 112

原创 8.字符串

8.字符串一、字符串和字符1.什么是字符串(str)字符串的容器数据类型(序列),将‘ ’或者“ ”或者‘’‘ ’‘’或者“”“ ”“”作为容器标志,里面每一个独立的符号就是字符串的一个元素字符串不可变;字符串是有序(支持下标操作)字符串的元素:引号里面的每个符号都是字符串的元素,字符串的元素又叫字符。字符分为两种:普通字符、转义字符'盛世美颜'"ssss"'2344''-=s,@&'1)空串empty1 = ''empty2 = ""empty3 = '''''

2021-05-08 17:56:27 192

原创 7.字典和集合练习

定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名、年龄、成绩(单科)、电话、性别(男、女、不明) )统计不及格学生的个数打印不及格学生的名字和对应的成绩统计未成年学生的个数打印手机尾号是8的学生的名字打印最高分和对应的学生的名字删除性别不明的所有学生将列表按学生成绩从大到小排序(挣扎一下,不行就放弃)students = [ {'name': '张三', 'age': 18, 'score': 77, 'phone_num': '11..

2021-05-07 22:53:47 177

原创 7.字典和集合

Day7 字典和集合一、字典1、什么是字典(dict)字典是容器型数据类型(序列),将{}作为容器标志,里面多个元素用逗号隔开(每个元素必须是键值对:{键1:值1,键2:值2,键3:值3,…}字典是可变的(支持增删改);字典无序键(key):不可变的数据才可以作为字典的键(数字、字符串、元组);键是唯一的值(value):值才是字典真正想要保存的数据,键的作用就像列表中的下标来对值进行区分和说明的。值可以是任何类型数据1)空字典dict1 = {}print(dict1, type(dic

2021-05-07 17:39:36 498 1

原创 day6-列表和元组作业

1.创建一个列表,列表中有10个数字, 保证列表中元素的顺序,对列表进行排重,并对列表使用进行降序排序例如:随机生成了[70, 88, 91, 70, 107, 234, 91, 177, 282, 197] --- 去重之后 [70, 88, 91, 107, 234, 177, 282, 197] ---- 降序排序 [282, 234, 197, 177, 107, 91, 88, 70]nums = [70, 88, 91, 70, 107, 234, 91, 177, 282, 1

2021-05-06 21:29:36 132

原创 day6 -元组和字典

day6 -元组和字典一、列表相关函数和方法1.列表(序列)相关函数:max、min、sum、len、sored、reversed、list1)max(序列) - 获取序列中最大的元素(序列中的元素本身必须支持比较运算,并且元素之间可以比较大小)nums = [89, 23, 45, 890, 82, 12, 40]print(max(nums)) # 8902)min(序列) - 获取序列中最小的元素nums = [89, 23, 45, 890, 82, 12, 40]print(m

2021-05-06 18:45:19 241

原创 day5-列表作业

1.已知一个数字列表,求列表中心元素。nums = [1, 2, 3, 4, 5, 6]count = len(nums)if count % 2 != 0: print('该列表的中心元素是:', nums[int(count/2)])else: print('该列表的中心元素是:', nums[int(count/2)], nums[int(count/2 - 1)])2.已知一个数字列表,求所有元素和。nums = [1, 2, 3, 4, 5, 6]sum = 0f

2021-05-05 16:14:23 112

原创 day5-列表

day5-列表1.列表的增删改1) 增 - 添加元素列表.append(元素) - 在列表的最后添加指定元素tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊榜', '甄嬛传', '亮剑', '请回来1988']tvs.append('生活大爆炸')print(tvs)# 练习:用一个列表保存100以内所有能被3整除的数list1 = []for num in range(0, 100, 3): list1.append(num)print(li

2021-04-30 23:27:08 83 1

原创 day-4 循环练习-4.29

day-4 循环练习-4.291.作业1)输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。for i in range(1, 10): for j in range(1, i + 1): print(j, 'x', i, '=', j*i,end=' ') print()这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)for big in ra

2021-04-29 20:50:04 142

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除