- 博客(26)
- 收藏
- 关注
原创 第三阶段: day-1 MySQL 基础 !!!
数据库:数据的仓库(集散地),它解决了数据持久化的问题持久化 —> 将数据从内存转义到硬盘(可以长久保存数据的存储介质)数据库的分类:1972 —> Codd —> 如果使用关系模型来保存大规模数据 ~ 关系型数据 —> 首选方案 — 理论基础:关系代数、集合论 — 具体表象:用二维表保存数据(行(记录)和列(字段)) — 编程语言:SQL(结构化查询语言) —> SQL方言 ~ 非关系型数据库 — NoSQL..
2021-06-07 20:53:36
78
原创 day-9 爬虫实例
day-9 爬虫实例1. aiohttp爬虫import reimport aiohttpimport asyncio# 命令捕获组(具名捕获组) ?P<T> pattern = re.compile(r'<title>(?P<T>.*?)</title>')urls = [ 'https://www.python.org/', 'https://www.taobao.com/', 'https://pypi.
2021-06-07 20:28:17
2087
1
原创 day8 爬虫相关方法
day8 爬虫相关方法1. 全局解释器锁(GIL) 全称:Global Interpretter LockCpytho —> 通过C实现的python解释器,申请和释放内容的操作并非线程安全,所以需要GIL来保证只有一个线路能执行关键操作,导致无法利用CPU的多核特性。即便如此,多线程还是可以提升程序的执行效率(对于I/O密集型任务),也可以改善用户体验。因此,对于计算密集型任务,可以使用多进程的方式来突破GIL的限制。from threading import Thread d
2021-06-07 20:27:54
140
1
原创 day-7 多线程和多进程的使用
day - 7 多线程和多进程的使用1.线程子类的用法创建线程的子类from threading import Thread, current_threadimport timeclass DownloadThread(Thread): # 3. 如果现实子线程中的任务需要额外的数据,数据通过对象属性来提供 def __init__(self, name): super().__init__(): # 继承父类 self.m_name = n
2021-06-02 23:15:06
82
原创 数据分析岗位爬取 (添加excel文档)
数据分析岗位爬取 (添加excel文档)import requestsfrom re import findallfrom json import loadsimport timeimport osimport openpyxl# url = 'https://search.51job.com/list/000000,000000,0000,00,9,99,数据分析,2,2001.html?lang=c&postchannel=0000&workyear=99&cot
2021-06-01 22:30:13
83
原创 day - 6 爬虫流程整理
day - 6 爬虫流程整理1. excel文件写操作获取工作簿对象(工作簿对应的就是一个excel文件)import openpyxl # 导入# 新建(默认有一个工作表)work_book = openpyxl.Workbook()# 打开work_book = openpyxl.load_workbook(文件路径)# work_book = openpyxl.Workbook()work_book = openpyxl.load_workbook('files/tes
2021-06-01 22:29:41
91
原创 day-5 selenium的使用
selenium的使用1. 图片爬取import requestsfrom selenium import webdriverfrom lxml import etreeimport csvdef get_net_data(): url = 'https://www.umei.net/' response = requests.get(url) response.encoding = 'utf-8' print(response.text) retur
2021-05-30 17:19:35
92
原创 day-4 解析器和selenium
解析器和selenium爬斗鱼import requestsfrom bs4 import BeautifulSoupimport csvimport reimport jsondef get_net_data(): url = 'https://www.douyu.com/g_LOL' response = requests.get(url) if response.status_code == 200: return response.text
2021-05-27 23:48:18
91
原创 day-3 代理和css选择器解析
代理和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) if res
2021-05-26 22:21:06
78
原创 第二阶段爬虫 day-1 HTML前端基础
HTML前端基础1.常用标签1网页基本结构:整个网页是一个html标签。(有多少个网页就有多少个html标签,就有多少个html文件)一个html标签里面有一个head标签和一个boby标签head负责网页头部的显示boby负责网页内容的显示标签语法:html是通过不同的标签来给网页提供不同的内容, 标签分为双标签和单标签两种双标签: <标签名 属性名1=“属性值” 属性名2=“属性值2”>(标签内容)</标签名>单标签: <标签名 属性名1=“属性
2021-05-24 20:19:23
104
原创 day.17 面向对象
面向对象1. 类和对象定义类(创建类)"""定义类用代码描述清楚你这个类是拥有那些相同功能相同属性的对象的集合功能 - 对应的是函数属性 - 保存数据的变量 (在类中叫属性)语法:class 类名: 类的说明文档 类的内容 说明:class - 关键字,固定写法类名 - 程序员自己命名 要求:是标识符,不是关键字 规范:见名知义;驼峰式命名(单词之间采用首字母大写),首字母大写;不使用系统
2021-05-19 22:31:55
77
原创 day - 16 正则表达式
正则表达式1. 检测类符号from re import fullmatch, findall\b - 检测是否是单词边界"""单词边界:凡是可以将两个单词分开的符号都是单词边界,比如:空白字符,标点符号,字符串开头和结尾注意:检测类符号是在匹配成功得情况下看检测类型在的位置是否符合要求"""re_str = r'abc \b123'print(fullmatch(re_str, 'abc 123'))re_str = r'\b\d\b'result = findall(r
2021-05-18 23:46:50
224
原创 day 14异常捕获
异常捕获import hashlibhash摘要(加密)的算法主要有两类:md5和sha-X系列hash加密的特点"""1) hash算法生成的摘要不可逆。(不能通过密文来获取原文)2) 只有相同的数据通过相同算法得到的摘要才是一致的3) 不管原数据多大,产生的摘要的大小(长度)一致。"""生成hash摘要# 1. 通过算法创建hash对象:hashlib.算法名() 算法名:md5、shaXXXhash = hashlib.sha512()# 2) 添加数据has
2021-05-16 21:05:27
102
原创 day - 12三大神器
三大神器1.迭代器(iter)"""迭代器是容器型数据类型(序列),迭代器无法直接获取所有元素,也不能统计元素个数。获取迭代器中的元素的是会导致这个元素从迭代器中消失。(元素取一个就少一个)"""创建迭代器# 创建迭代器只有两种方式:1)将其他序列转换成迭代器 2)创建生成器iter1 = lier('abc')print(iter1) # <str_iterator object at 0x000002556C238400>iter2 = lter([10,
2021-05-13 23:46:28
123
原创 day.11 函数高阶
函数高阶1. 匿名函数 - 没有函数名的函数"""函数名 = lambda 形参列表:返回值相当于:def 函数名(形参列表): return 返回值 注意:匿名的本质还是函数,之前函数中除了定义函数的语法以外的内容都适用于匿名"""# 求两个数的和的匿名函数sum1 = lambda num1, num2=100: num1 + num2# def sum1(num1, num2):# return num1 + num2print(sum1(1
2021-05-12 22:57:01
66
原创 day-10函数进阶
函数进阶位置参数和关键词参数# 根据实参的提供是不同将实参分为位置参数和关键字参数"""1)位置参数:调用函数的时候让实参和形参在位置上一一对应2)关键字参数:调用函数时,以'形参名=值'的形式确定形参对应的实参3)位置参数和关键词参数混用:位置参数必须在关键字参数前面,同时必须保证每个参数都会有一次赋值def func1(x, y, z): print(f'x:{x},y{y},z:{z}')#位置参数func1(10, 20, 50)#关键字参数func1(y
2021-05-11 23:09:02
67
原创 day-9 格式字符串和函数基础
格式字符串和函数基础格式字符串格式化字符串:格式占位符'''语法:包含格式占位符的字符串 % (数据1, 数据2, ...)说明:括号中数据的个数需要格式占位符的个数保持一致格式占位符:%s - 字符串 (任何类型的数据)%d - 整数%f - 浮点数 %.NF - 保存N为小数'''# 普通格式name = input('请输入姓名')age = nt(input('请输入年纪'))# 输出 'xxx今天xx岁'massage = name +
2021-05-10 23:52:25
108
原创 day.8 字符串
字符串什么是字符串(str)字符串是容器型数据类型(序列),将’‘或者""或者’’’’’’'或者"""""""作为容器标准,里面每一个独立的符号就是字符串的一个元素字符串不可变;字符串是有序的(支持下标操作)字符串的元素:引号里面的每个符号都是字符串的元素,字符串的元素又叫字符,字符分为两种: 普通字符,转义字符 1.空串 (引号中什么都没有,空格也不行)empty1 = ''empty2 = ""empty3 = ''''''empty4 = """"""print(type(em
2021-05-09 20:49:01
223
原创 Day 7 字典和集合
字典和集合什么是字典(dit)字典是容器型数据类型(序列), 将{}作为容器标志,里面多个元素用逗号隔开(每个元素必须是键值对): {键1:值1, 键2:值2, 键3:值3,…}字典是可变的(支持增删改);字典无序键: 不可变的数据才可以作为字典的键(数字、字符串、元组);键是唯一的值:值才是字典真正想要保存的数据,键只是的作用就像列表中的下标用来对值进行区分和说明的。值可以是任何类型的数据 1.空字典dict1 = {}print(doct1, type(dict1), len(d
2021-05-08 08:47:44
76
原创 dya6 列表的相关函数
列表的相关函数列表(序列)相关函数:max、min、sum、len、sored、reversed、listmaxmax(序列): - 获取序列中最大的元素(序列中的元素本身必须支持比较运算,并且元素之间可以比较大小)例如:nums = [50, 46, 52, 9, 13]print(max(nums)) # 52minmin(序列) - 获取序列中最小的元素例如:print(min(nums)) # 9sumsum(序列) - 求序列中所有元
2021-05-06 23:23:26
121
原创 4.30 当天作业
作业已知一个数字列表,求列表中心元素。# num = [20, 50, 25, 30]nums = [90, 98, 93, 91, 87, 83, 80, 70, 65, 62, 56, 23, 20, 1, 5]nums_len = len(nums)if nums_len % 2: print('中心元素:', nums[nums_len // 2])else: print('中心元素:', nums[nums_len // 2 - 1], nums[nums_len
2021-05-05 21:46:17
56
原创 day 5 元素列表的增减改
元素列表的增减改 总结增 - 添加元素列表.append(元素) - 在列表的最后添加指定元素例如:tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊版', '甑环转', '亮剑', '请回答1988']tvs.append('生活大爆炸')print(tvs)# ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊版', '甑环转', '亮剑', '请回答1988', '生活大爆炸']练习:用一个列表保存100以内所有能被3整除的
2021-05-01 00:14:00
120
1
原创 day 4 复习循环练习题和列表
day 4 复习循环练习和列表使用for和while循环输出 0~100内所有3的倍数。for循环for x in range(0, 100, 3): print(x) while循环# 方法一x = 0while x <= 100: if x % 3 == 0: print('3的倍数', x ) x += 3# 优化num = 0while True: print(num) num += 3
2021-04-29 22:21:06
170
原创 day3 for循环
day3 for循环和while循环循环 :让代码只写一次却可以执行多次循环分为:for循环语法for 变量 in 序列:循环体说明for、in - 关键字,固定写法变量 - 变量名(可以是没有定义过的变量的变量名,也可以是已经定义过的变量名)序列 - 容器型数据类型的数据,常见序列:字符串、列表、元组、字典、集合、迭代器、生成器、range等。: - 固定写法循环体 - 和for保存一个缩进的一条或者多条语句。(循环体
2021-04-28 22:59:20
161
原创 day2 运算符和if语句
day2 运算符和if语句一、python中常用的运算符数学运算符+(加)-(减)*(乘)/(除)和数学中加减乘除的功能一模一样%(取余、取模)例如:x % y - 求x除以y的余数print(5 % 2)print(9 % 3)应用范围:# 应用一:判断一个数能否被另一个数整除print(10 % 2)# 应用二;取一个数的地位数num = 232print(num % 10) #取个位 2print(num % 100) #取十位 32
2021-04-28 00:18:19
186
原创 正式学习python的第一天
正式学习python的第一天注释注释 :代码中不参与编译执行(解释),不影响程序的功能的说明文字。在程序用来对代码进行注释和说明单行注释 :在文字前加#, 快捷键 ctr+/多行注释 :将注释内放"""开头和结尾中或者放在’’'开头和结尾常用快捷键ctr+\ - 添加、取消注释ctr+s - 保存ctr+c - 复制ctr+v - 粘贴ctr+x - 剪切ctr+f - 搜索ctr+z - 撤销ctr+shift+z - 反撤销c
2021-04-27 22:38:23
97
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人