自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第三阶段: day-1 MySQL 基础 !!!

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

2021-06-07 20:53:36 170

原创 day-9 爬虫实例

day-9 爬虫实例 1. aiohttp爬虫 import re import aiohttp import 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 2344 1

原创 day8 爬虫相关方法

day8 爬虫相关方法 1. 全局解释器锁(GIL) 全称:Global Interpretter Lock Cpytho —> 通过C实现的python解释器,申请和释放内容的操作并非线程安全,所以需要GIL来保证只有一个线路能执行关键操作,导致无法利用CPU的多核特性。 即便如此,多线程还是可以提升程序的执行效率(对于I/O密集型任务),也可以改善用户体验。 因此,对于计算密集型任务,可以使用多进程的方式来突破GIL的限制。 ​ from threading import Thread d

2021-06-07 20:27:54 221 1

原创 day-7 多线程和多进程的使用

day - 7 多线程和多进程的使用 1.线程子类的用法 创建线程的子类 from threading import Thread, current_thread import time class DownloadThread(Thread): # 3. 如果现实子线程中的任务需要额外的数据,数据通过对象属性来提供 def __init__(self, name): super().__init__(): # 继承父类 self.m_name = n

2021-06-02 23:15:06 158

原创 数据分析岗位爬取 (添加excel文档)

数据分析岗位爬取 (添加excel文档) import requests from re import findall from json import loads import time import os import 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 137

原创 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 172

原创 day-5 selenium的使用

selenium的使用 1. 图片爬取 import requests from selenium import webdriver from lxml import etree import csv def 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 168

原创 day-4 解析器和selenium

解析器和selenium 爬斗鱼 import requests from bs4 import BeautifulSoup import csv import re import json def 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 168

原创 day-3 代理和css选择器解析

代理和css选择器解析 获取代理ip import requests def 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 144

原创 第二阶段爬虫 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 167

原创 day.17 面向对象

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

2021-05-19 22:31:55 124

原创 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 313

原创 day 14异常捕获

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

2021-05-16 21:05:27 180

原创 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 200

原创 day.11 函数高阶

函数高阶 1. 匿名函数 - 没有函数名的函数 """ 函数名 = lambda 形参列表:返回值 相当于: def 函数名(形参列表): return 返回值 注意:匿名的本质还是函数,之前函数中除了定义函数的语法以外的内容都适用于匿名 """ # 求两个数的和的匿名函数 sum1 = lambda num1, num2=100: num1 + num2 # def sum1(num1, num2): # return num1 + num2 print(sum1(1

2021-05-12 22:57:01 122

原创 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 126

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

格式字符串和函数基础 格式字符串 格式化字符串:格式占位符 ''' 语法:包含格式占位符的字符串 % (数据1, 数据2, ...) 说明:括号中数据的个数需要格式占位符的个数保持一致 格式占位符: %s - 字符串 (任何类型的数据) %d - 整数 %f - 浮点数 %.NF - 保存N为小数 ''' # 普通格式 name = input('请输入姓名') age = nt(input('请输入年纪')) # 输出 'xxx今天xx岁' massage = name +

2021-05-10 23:52:25 156

原创 day.8 字符串

字符串 什么是字符串(str) 字符串是容器型数据类型(序列),将’‘或者""或者’’’’’’'或者"""""""作为容器标准,里面每一个独立的符号就是字符串的一个元素 字符串不可变;字符串是有序的(支持下标操作) 字符串的元素:引号里面的每个符号都是字符串的元素,字符串的元素又叫字符,字符分为两种: 普通字符,转义字符 ​ 1.空串 (引号中什么都没有,空格也不行) empty1 = '' empty2 = "" empty3 = '''''' empty4 = """""" print(type(em

2021-05-09 20:49:01 348

原创 Day 7 字典和集合

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

2021-05-08 08:47:44 148

原创 dya6 列表的相关函数

列表的相关函数 列表(序列)相关函数:max、min、sum、len、sored、reversed、list max max(序列): - 获取序列中最大的元素(序列中的元素本身必须支持比较运算,并且元素之间可以比较大小) 例如: nums = [50, 46, 52, 9, 13] print(max(nums)) # 52 min min(序列) - 获取序列中最小的元素 例如: print(min(nums)) # 9 sum sum(序列) - 求序列中所有元

2021-05-06 23:23:26 210

原创 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 145

原创 day 5 元素列表的增减改

元素列表的增减改 总结 增 - 添加元素 列表.append(元素) - 在列表的最后添加指定元素 例如: tvs = ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊版', '甑环转', '亮剑', '请回答1988'] tvs.append('生活大爆炸') print(tvs) # ['回家的诱惑', '非自然死亡', '我的兄弟叫顺溜', '琅琊版', '甑环转', '亮剑', '请回答1988', '生活大爆炸'] 练习: 用一个列表保存100以内所有能被3整除的

2021-05-01 00:14:00 187 1

原创 day 4 复习循环练习题和列表

day 4 复习循环练习和列表 使用for和while循环输出 0~100内所有3的倍数。 for循环 for x in range(0, 100, 3): print(x) ​ while循环 # 方法一 x = 0 while x <= 100: if x % 3 == 0: print('3的倍数', x ) x += 3 # 优化 num = 0 while True: print(num) num += 3

2021-04-29 22:21:06 320

原创 day3 for循环

day3 for循环和while循环 循环 :让代码只写一次却可以执行多次 循环分为: for循环 语法 for 变量 in 序列: 循环体 说明 for、in - 关键字,固定写法 变量 - 变量名(可以是没有定义过的变量的变量名,也可以是已经定义过的变量名) 序列 - 容器型数据类型的数据,常见序列:字符串、列表、元组、字典、集合、迭代器、生成器、range等。 : - 固定写法 循环体 - 和for保存一个缩进的一条或者多条语句。(循环体

2021-04-28 22:59:20 219

原创 day2 运算符和if语句

day2 运算符和if语句 一、python中常用的运算符 数学运算符 +(加) -(减) *(乘) /(除) 和数学中加减乘除的功能一模一样 %(取余、取模) 例如: x % y - 求x除以y的余数 print(5 % 2) print(9 % 3) 应用范围: # 应用一:判断一个数能否被另一个数整除 print(10 % 2) # 应用二;取一个数的地位数 num = 232 print(num % 10) #取个位 2 print(num % 100) #取十位 32

2021-04-28 00:18:19 289

原创 正式学习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 165 1

空空如也

空空如也

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

TA关注的人

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