- 博客(31)
- 收藏
- 关注
原创 2-6.自动化采集
实际上,它就是find_element_by_id()这种方法的通用函数版本,比如find_element_by_id(id)就等价于find_element(By.ID,id),二者得到的结果完全一致。注意,在这个方法的名称中,element多了一个s,注意区分。在Selenium中,get()方法会在网页框架加载结束后结束执行,此时如果获取page_source,可能并不是浏览器完全加载完成的页面,如果某些页面有额外的Ajax请求,我们在网页源代码中也不一定能成功获取到。...............
2022-07-18 16:25:05
505
原创 2-5.多进程、多线程、异步携程
多线程1. threadingimport threadingthread = threading.Thread(target=target, args=[i])def targets(second):print(f’Threading {threading.current_thread().name} is running’)print(f’Threading {threading.current_thread().name} sleep {second}s’)time.sleep(seco
2022-05-10 15:12:56
290
原创 2-4.动态数据采集
flask引入from flask import Flask,render_template,request,jsonifyapp = Flask(__name__)路由@app.route(‘/’) 挂载到根目录# 视图函数,负责处理业务逻辑@app.route('/')def index(): return '大家晚上好'@app.route('/login')def get_login(): return render_template('login.ht
2022-05-07 10:59:14
419
原创 2-3.数据存储篇
JSONw 写 r 读 a 追加最好是处理好数据一次写入import jsonimport osdata = [{'name': ' 王伟 ','gender': ' 男 ','birthday': '1992-10-18'}]#文件名filename = 'data.json'if os.path.exists(filename) is False: with open(filename, 'w', encoding='utf-8') as file:
2022-04-24 11:04:14
2834
原创 2-2.数据解析篇
python 里面得标准库 正则match 的使用import recontent = 'Hello 123 456 welcome to tuling'result = re.match('^Hello\s\d\d\d\s\d{3}\s\w{7}', content)# print(result.span())# (0, 21)# print(result.group())# Hello 123 456 welcome# 匹配1次到多次 \d+content1 = 'Hell
2022-03-22 17:29:50
59
原创 2-1.数据请求篇
HTTP基本原理内部通讯运用的是IP地址在线的域名解析器https://site.ip138.com/ip.ip138.com/url的分解https://www.itjuzi.com/search?data=小米&key=貂蝉https://协议www.itjuzi.com/域名search路径? data=小米 & key=貂蝉"?"查询字符串 "&"多条件拼接 "data=小米"条件计算机最大端口数65535在浏览器地址栏显示"不安全"有可
2022-03-22 10:05:01
1143
原创 23.MongoDB
MongoDB库操作进入mongo退出exit切换/创建库use 库名查所有show dbs库的所在位置db删除库db.dropDatabase()集合操作创建集合db.createCollection('stu')查看当前数据库的集合show collections删除集合db.stu.drop()文档操作增插入一条 语法 db.集合名称.insert(文档) 实例 db.st
2022-03-17 21:35:28
724
原创 20-2.MySQL3
常见约束not null 非空default '默认值' 默认值auto_increment 必须要加一个键 自增长 可以不用进行插入了primary key 主键 非空且唯一unique key(x) 唯一约束unique key(x,y) 联合唯一(二者加起来是唯一)primary key 非空且唯一primary key(x,y)
2022-03-15 22:03:29
577
原创 22.redis和py_redis
redis命令概述Redis本质上是一个Key-Value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作。Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,redis不仅仅支持简单的Key-Value类型,同时还把value分为list,set,zset,hash等数据类型Redis的主
2022-03-15 10:54:41
1014
原创 21.pyMySQL操作数据库
pycharm远程链接数据库事务可以包含一系列的sql语句,事务的执行具有原子性包含多条sql语句要么都执行成功,要么都执行不成功create table tt1(id int,name varchar(12));insert into tt1 values(1,'dahai');开启事务start transaction;insert into tt1 values(1,'dahai');提交事务commit;回滚rollback;...
2022-03-14 15:25:17
865
原创 20.MySQL2
单表查询完整语法(语法级别关键字的排列顺序如下)select distinct 字段1,字段2,字段3,... from 库名.表名 where 约束条件 group by 分组依据 having 过滤条件 order by 排序的字段 limit 限制显示的条数 ;
2022-03-11 16:21:04
539
原创 19.MySQL_1
mysql数据库sql语句登录mysql -u用户名 -p密码退出exitmysql库的操作(create/drop/alter/show)charset utf8 必须加增语法 create database 数据库名字 charset 编码格式(不需要加引号)实例 create database dahai1 charset utf8;删语法 drop database 数据库名字实例 drop database dahai1;改 字符编码语法 alter
2022-03-03 16:20:35
383
原创 18.liux基础命令和vim使用
Linux常用命令ls 查看当前文件夹的所有内容history 查看历史命令!历史命令编号 执行历史命令(没有空格)命令体 选项 路径ls -l(详细信息) snappwd 查看当前路径(我在哪)whoami 查看当前的root用户(我是谁) 用户名 pyvip 密码 pythonvipcd前面没有 / 代表的是相对路径前面有 / 代表的是绝对路径注意cd 后面是要有空格cd … 返回上一级目录cd …/… 返回上上级目录cd /
2022-03-02 16:21:04
261
原创 17.并发编程3
线程池和进程池计算机开进程或者线程受限于计算机本身的硬件,所以就有了进程池和线程池限制最大进程或者线程数不会造新的进程或者线程,不会浪费内存空间进程池的使用提交任务的两种方式:同步调用:提交完一个任务之后,就在原地等待,等待任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行的提交任务的方法,串行是任务的运行状态异步调用:提交完一个任务之后,不在原地等待,结果???,而是直接执行下一行代码,会导致任务是并发执行的提交任务的方法,并发是任务的运行状态from concu
2022-03-01 12:12:39
148
原创 16.并发编程2
线程理论1 什么是线程进程其实一个资源单位(开启一个内存空间,里面放应该执行的代码,代码运行产生的数据),而进程内的线程才是cpu上的执行单位进程是资源单位 qq资源 相当于一个车间 造发动机和造轮胎能共享吗线程其实指的就是代码的执行过程(开空间没关系,数据往进程去要)线程就是车间流水线 跟车间要至少有一个线程 一个车间也可以有多少流水线2 为何要用线程线程vs进程1. 同一进程下的多个线程共享该进程内的资源2. 创建线程的开销要远远小于进程并发2种多进程实际上是每个进程里面单
2022-02-28 15:36:12
98
原创 15.并发编程1
确认多个子进程执行完毕import demofrom multiprocessing import Processdef target(i): print(i)if __name__ == '__main__': p_l = [] for i in range(5): p = Process(target=target,args=(i,)) p.start() p_l.append(p) # p.join()
2022-02-25 11:43:31
229
原创 14.网络编程2
基于tcp协议tcp协议可能是多发对应一收 数据流 *****优点,传输数据更加可靠缺点,每次传数据必须建立链接,每次发数据必须确认下载,转载用tcp基于udp协议udp是一发对应一收 ,不会有粘包问题,数据报稳定传输的字节512字节优点,传输数据更快缺点,数据容易丢失, 传输数据不可靠用于聊天udp...
2022-02-24 14:07:42
67
原创 13.网络编程1
socket的使用一、服务端1.首先建立链接AF_INET 互联网协议SOCK_STREAM TCP流式协议import socketphone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)2.bind,绑定IP和端口phone.connect(('192.xxx.xxx.xxx',8080))3.listen,监听客户端数量phone.listen(5)4.建立三次握手conn : 建立三次握手后的套接字client_
2022-02-23 10:48:32
1183
原创 12.模块
模块的介绍1 什么是模块模块就是一系列功能的集合体模块有二种来源1-1. 自定义模块 py文件1-2. 内置的模块模块的格式:使用python编写的.py文件python文件就是一系列功能的集合体2 为何要用模块2-1. 使用内置模块的好处是: 拿来主义,可以极大提升开发效率2-2. 使用自定义模块的好处是: 可以减少代码冗余(抽取我们自己程序中要公用的一些功能定义成模块,然后程序的各部分组件都去模块中调用共享的功能)import导入spam是一个在同级目录下的.py文件导入
2022-02-22 10:21:45
470
原创 11.面向对象3
封装封装的介绍1.什么是封装 *****装:往容器/名称空间里存入名字封:代表将存放于名称空间中的名字给藏起来,这种隐藏对外不对内2.为何要封装封数据属性:???封函数属性:???3.如何封装在类内定义的属性前加__开头封装属性的意义1.封装数据属性:将数据属性隐藏起来,类的外面就无法直接操作属性,怎么间接使用?2.需要类内开辟一个接口来外部的使用可以间接地操作属性,可以在3.从而严格控制使用对属性的操作class People: def __init__(self,name
2022-02-21 15:15:38
456
原创 10.面向对象2
继承介绍1 什么是继承继承一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类\基类\超类python中继承的特点:1. 子类可以遗传/重用父类的属性2. 利用继承来解决类和类之间的代码冗余问题2 为何要用继承减少类与类之间代码冗余总结对象的相似之处得到了类总结类的相似之处得到父类3 如何用继承class People: school = '图灵学院' def __init__(self,name,age,sex): self.name =
2022-02-17 21:26:07
329
原创 9.面向对象1
面向对象编程介绍面向过程的编程思想核心过程二字,过程指的是解决问题的步骤,即先干什么\再干什么\后干什么基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式优点:复杂的问题流程化\进而简单化 (一步步去思考,写一步走一步)缺点:可扩展性差(加一点参数或者方法可能改掉原来的代码,一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身。)就像打工自己需要技术,学历,工作经验等等老板或者领导把事情安排好就ok了,员工只
2022-02-17 09:25:30
209
原创 7.python文件操作
1 什么是文件文件是操作系统为用户/应用程序提供的一种操作硬盘的抽象单位2 为何要用文件用户/应用程序对文件的读写操作会由操作系统转换成具体的硬盘操作所以用户/应用程序可以通过简单的读\写文件来间接地控制复杂的硬盘的存取操作实现将内存中的数据永久保存到硬盘中内存 user=input('>>>>: ') #user="大海"3 如何用文件文件操作的基本步骤: f=open(...) #打开文件,拿到一个文件对象f,f就相当于一个遥控器,可以向操作系
2022-02-14 11:41:57
58
原创 6.python异常处理
异常异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止异常包含三个部分: 1.异常的追踪信息 File "D:/python代码6/day6/1.异常.py", line 10, in <module> aaa 2.异常的类型 NameError 3. 异常的信息 name 'aaa' is not defined错误分为两大类: 1. 语法上的错误:在
2022-02-10 19:57:57
94
原创 5.Python函数高级
有名函数多次使用,会重复调用def run(x,y): print(x,y) return x,yrun(1,2)匿名函数1 匿名函数:就是没有名字的函数2 为何要用:用于仅仅临时使用一次的场景,没有重复使用的需求匿名函数的定义print(lambda x, y: x + y)表达式(lambda x, y: print(x + y))(1, 2)匿名函数一般和max,min,sorted连用 salaries= { 'xialuo':3000000, 'xish
2022-02-07 14:03:50
1110
原创 4.python函数基础
1.说明一些函数各种参数的用法?函数的参数分为:形参和实参形参 位置参数 类似一个变量用于存放对应位置实参传过来的值 默认参数 用于实参中有多个共同属性和值的关键字参数 不定长参数 *args 用于接收未知长度的位置参数 **kwargs 用于接收位置长度的关键字参数实参位置参数 单个或多个,用逗号隔开的参数关键字参数 单个或多个带有Key 和 Value 的字典型参数2.对于函数来说 return是什么?对于函数来说,return就是一
2022-01-27 13:58:11
302
原创 3.python流程判断
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2022-01-26 20:10:00
1132
原创 1.python起步-变量和数据类型的介绍
1.数据类型分类,描述一些他们各自的作用表示数字类的:1.整行 int 代表一个整数 作用表示年龄 日期 2.浮点型 float 代表一个小数 作用表示身高 体重 金额 钱3.布尔类型:True 和 False ,用于条件判断4.复数类型:不知道是用来做什么的?表示容器类的:1.序列类型:(可以通过索引查找)2.列表 list 多个数据 存储数据,可以存放任意的数据类型3.元组 tuple 多个数据 存放数据,可以存放任意的数据类型,不能"增删改"4.字符串 str 一个数据 描述性
2022-01-26 16:28:33
735
原创 2.python数据类型的常用操作
str字符串的操作 (不可变类型 值变 id也变)**增** 字符串+字符串 "%s %d" %("字符串",18) format "my name is {0},age is {1}" .foramt("大海",18) join str = " ".join(["aaa","bbb","ccc"])**删** del name="大海" del name**改** 变小写 lower 变大写 upper 首字母大写 capitalize 把字符
2022-01-26 15:52:49
832
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人