自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-03-12

迭代器2from collections.abc import Iterable#定义一个迭代对象类继承Python超级父类objectclass dddx(object):def init(self):self.list=[]def add(self, item):self.list.append(item)#有__iter__方法的对象,才是可以迭代的对象(int 也返回true)#如果类中不定义此方法,数组也不可以迭代def iter(self):pass#实例化这个类的对象

2021-03-12 14:07:05 71

原创 2021-03-12

‘’’迭代器‘’’#导入一个迭代器Iterable,第三方包from collections.abc import Iterableprint(isinstance([1,3],list))print("-----1")print(isinstance({1,3,12},Iterable))print("-----2")print(isinstance(“abc”,Iterable))print("-----3")print(isinstance(10000000,int))prin

2021-03-12 14:06:33 68

原创 2021-03-12

‘’‘1、 功能描述1 创建一个部门表(department),包含字段id,name2创建一个员工表(employees),包含字段id,name,birthday,gender,salary,dep_id 使用外键引用到部门表中的id字段,并且添加一个普通索引到name字段3 在部门表中添加三条记录 id:1 name:技术部,id:2 name:财务部,id:3 name:市场部4 在员工表里添加六条记录,id:1 name:’张三’ birthday:”2010-11-10” gender

2021-03-12 14:06:01 652

原创 2021-03-12

‘’‘小明是一个直播带货的主播,他想找人做一个方便操作的系统。并且有一个单独的数据库,订单和商品相互独立。(1)小明的仓库有五种商品:①牙刷 5元 库存10个②小熊背包 130元 库存5个③2B铅笔 2元 库存15个④笔记本电脑 8900元 库存2个⑤dsb处理器 880元 库存3个(2)在pycharm命令行输入购买可以购买商品,所购买的商品用商品号区分,并生成一个对应商品的订单号。请

2021-03-12 14:05:29 138

原创 2021-03-12

‘’’用多线程写消费者模式‘’’import time#非消费模式def P_C():# 该情况下,生产者 产出 产品 ,消费者 要消费产品# 生产者生产后需要等消费者消费掉# 消费者消费前要等生产者生产for i in range():print(‘Producers,生产者生产产品%s’%i)print(‘Consumers,消费者生产产品%s’ % i)time.sleep(1)from threading import Threadfrom queue impor

2021-03-12 14:04:55 42

原创 2021-03-12

正则表达式,用来匹配#导入re模块import reresult=re.match(“abc”,“abc.cn”)print(result.group())re1=re.match("\w",“hello python”)print(re1.group())re2=re.match(".",“hello python”)print(re1.group())$需求:匹配163.com的邮箱地址email_list = [“xiaoWang@163.com”, “xiaoWang@163.

2021-03-12 14:04:35 90

原创 2021-03-12

小明是一个直播带货的主播,他想找人做一个方便操作的系统。并且有一个单独的数据库,订单和商品相互独立。(1)小明的仓库有五种商品:①牙刷 5元 库存10个②小熊背包 130元 库存5个③2B铅笔 2元 库存15个④笔记本电脑 8900元 库存2个⑤dsb处理器 880元 库存3个(2)在pycharm命令行输入购买可以购买商品,所购买的商品用商品号区分,并生成一个对应商品的订单号。请输入操

2021-03-12 14:03:49 104

原创 2021-03-11

#斐波那契数列迭代器class fbnq(object):def init(self,n):# n 指生成数列的前n个数self.n=n#num1用来保存前一个数,初始值为数列的第一个数0self.num1=0#num2用来保存前一个数,初始值为数列的第二个数1self.num2=1# count 用来保存生成当前生成到数列中的第几个数了self.count=0def next(self):#被__next__函数调用来获取下一个数if self.count < self.n

2021-03-12 14:03:02 48

原创 2021-03-11

‘’’yield和send‘’’def a():value=yield 1yield valueb=a()#print(next(b))#send 发送给下一个yield的值print(b.send(None))print(b.send(‘qqq’))

2021-03-11 09:20:52 46

原创 2021-03-11

‘’’iter()函数和next()函数‘’’from collections.abc import Iterableclass dddx(object):def init(self):self.list=[]def add(self, item):self.list.append(item)def iter(self):passa=dddx()a.add(1)print(isinstance(a,Iterable))#iter()函数获取这些可迭代对象的迭代器。#然后我们可以

2021-03-11 09:20:09 46

原创 2021-03-11

‘’’greenlet模块‘’’import time#引入协程from greenlet import greenlet#消费者def consumer_():while True:n=gr_p.switch()print(‘消费%s…’ % n)time.sleep(3)#生产者def produce_():for n in range(1,5):print(‘生产%s…’ % n)gr_c.switch(n)time.sleep(0.5)gr_c=greenlet

2021-03-11 09:19:06 35

原创 2021-03-11

‘’’抓取urllib‘’’import urllib.requestresponse=urllib.request.urlopen(‘https://www.taobao.com’)#或网址’https://www.baidu.com’#获取响应头部信息headers=response.getheaders()for k,v in headers:print(’%s,%s’% (k,v))#获取网页源码html=response.read()print(html)...

2021-03-11 09:15:32 42

原创 2021-03-11

‘’’数据库和冒泡和二分法练习题‘’’#导入第三方数据包import pymysqlcon=pymysql.connect(host=‘localhost’,port=3306,user=‘root’,password=‘123456’,database=‘bbb’)#打开连接的游标cur=con.cursor()qq1 = “select * from student”#执行SQL语句cur.execute(qq1)#提交数据库连接con.commit()#获取所有结果的行da

2021-03-11 09:14:06 40

原创 2021-03-11

#二分法 折半查找 必要条件 有序列表list =[23,196,34,56,89,111]def search(list,item):#中间点mid=len(list)//2#如果中间点是我们想要查找的数据,就返回Trueif item == list[mid]:return Trueelif item not in list:return False#如果我们查找的数据大于中间点时候elif item > list[mid]:#我们就去中间点的右面看看,区间就是中间点右面第

2021-03-11 09:12:25 32

原创 2021-03-11

‘’’队列的练习2‘’’class Queue:def init(self):self.list=[]def enqueue(self,data):#往队列头中添加一个新元素self.list.insert(0,data)def travel(self):#遍历所有元素if list !=[]:for i in self.list:print(i)else:print(‘悟了’)def dequeue(self):#从队列尾端删除一个元素self.list.pop()d

2021-03-11 09:11:51 37

原创 2021-03-11

‘’’队列的练习1‘’’#定义类class Queue():def init(self):# 定义一个空self.list = []# 判断是否为空def is_empty(self):return self.list == []#添加一个元素def enqueue(self,item):self.list.append(item)#删除一个元素pop()def dequeue(self):return self.list.pop(0)#返回栈顶元素peek()def p

2021-03-11 09:11:10 37

原创 2021-03-11

‘’’栈的练习‘’’class Stack():def init(self):#定义一个空栈self.list=[]# 判断()栈是否为空def is_empty(self):return self.list[]def push(self,item):# 往栈中添加append()元素self.list.append(item) def pop(self): # 弹出pop()栈顶元素,删除元素 return self.list.pop() # 返回栈顶元

2021-03-11 09:10:13 30

原创 2021-03-10

‘’’互斥锁线程‘’’import threadingimport timeg_num=0def test1(num):#global是全局变量global g_numfor i in range(num):mutex.acquire()#上锁g_num +=1mutex.release()#解锁print("—test1—num=%d"%g_num)def test2(num):global g_numfor i in range(num):mutex.acquire(

2021-03-11 09:07:40 40

原创 2021-03-10

‘’’死锁‘’’import threadingimport timedef test1():mutexA.acquire() #A上锁# mutexA上锁后,延时1秒,等待另外那个线程把mutexB上锁print(’—do1—up—’)time.sleep(1)#此时会堵塞,因为这个mutexB已经被另外的线程抢先上锁了mutexB.acquire() #B上锁print(’—do1—down—’)mutexB.release() #B解锁mutexA.re

2021-03-10 09:36:50 56

原创 2021-03-10

#线程2import threadingfrom time import sleepdef sing():for i in range(5):# 休眠时间随意书写sleep(1)print(“正在跳舞…%d”%i)def dance():for i in range(5):# 休眠时间随意书写sleep(1)print(“正在唱歌…%d”%i)#程序入口,书写规范,实例化调用函数在这里书写mainif name == ‘main’:print(’----开始----’)#t

2021-03-10 09:34:20 38

原创 2021-03-10

#关于安装人工智能:‘’’pip install Tensorflowpip install keraspip install nltk‘’’‘’’import nltkimport sslfrom nltk.stem.lancaster import LancasterStemmerimport numpy as npfrom keras.models import Sequentialfrom keras.layers import Dense,Activation,Dropou

2021-03-10 09:33:45 48

原创 2021-03-10

‘’’使用matplotlib画饼状图:在终端Terminal下下载matplotlib:python -m pip install matplotlib导入第三方包:import matplotlib.pyplot as plt导入随机数random:import random‘’’import matplotlib.pyplot as pltimport randomplt.figure(figsize=(20,8))2、准备数据、折现图点,x,y坐标个数一一对应x = ran

2021-03-10 09:33:02 2383

原创 2021-03-10

‘’’线程:就是在进程中执行的代码。一个进程下可以运行多个线程,这些线程之间,共享主进程内的系统资源。在一个进程中启动多个线程的时候,每个线程按照顺序执行,现在的操作系统中,支持线程抢占,会造成资源争夺,会造成资源篡改,丢失等问题解决方式:加锁多线程:也被称为并发线程的特点:1.线程必须存在于一个已经存在的进程中2.线程使用进程来获取系统资源,他不会像进程那样向CPU申请资源3.线程是无法给与公平的执行时间(线程执行任务的时间是不确定的,也可以理解成我们没有办法控制一个线程的执行时间

2021-03-10 09:32:30 26

原创 2021-03-10

‘’’进程:也就是说,每个代码在执行的时候,首先本身就是一个进程,一个进程具有:就绪,运行,中断,僵死,结束进程的特点:每个程序都是一个进程运行中的每个进程,都拥有自己的地址空间,内存,和数据栈,以及其他资源操作系统本身自动管理着所有的进程,不需要用户通过代码来干涉进程是可以自行合理分配的可执行任务的进程可以通过派生新的进程来执行其他任务就算是派生新的进程去执行任务,每个进程依然拥有自己的地址空间,内存,和数据栈以及其他资源进程可以通讯(接收信息。发消息)它采用进程间通讯(IPC)

2021-03-10 09:31:51 37

原创 2021-03-10

列表的简单写法list=[]for i in range(3):list.append(i)print(list)#判断条件,区间print([i for i in range(8)if i>3])

2021-03-10 09:30:58 26

原创 2021-03-10

‘’’选择排序‘’’def brr(alist):n=len(alist)#需要进行n-1选择for i in range(n-1):#记录最小位置min=i#i+1位置上到末尾选择出最小位置for j in range(i+1,n):if alist[j]<alist[min]:min=j#如果选择的数据不在正确位置,进行交换if min !=i:alist[i],alist[min]=alist[min],alist[i]return alistalist=[34

2021-03-10 09:30:27 26

原创 2021-03-10

冒泡排序def mpao(arr):#n的长度n=len(arr)#遍历n所有数组元素for i in range(0,n):#或者for i in range(n)#因为前面交换一次了,所以前面的那个不用在交换了。继续交换后面的元素for j in range(0,n-i-1):if arr[j]>arr[j+1]:#左面的比右面的大就交换位置arr[j],arr[j+1]=arr[j+1],arr[j]arr=[97,88,23,64,78,90]mpao(arr)pri

2021-03-10 09:29:50 33

原创 2021-02-26

pip install redisfrom redis import *通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0sr = StrictRedis(host=‘localhost’, port=6379, db=0)#简写sr=StrictRedis()from redis import *if name==“main”:try:#创建StrictRedis对象,与redis服务器建⽴

2021-03-10 09:21:23 36

原创 2021-02-26

Redis基础知识redis是一个key-value存储系统,它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-s

2021-02-26 09:48:22 33

原创 2021-02-26

一 框架工作原理介绍1 为什么学习scrapy?scrapy能解决剩下的10%的爬虫需求能够让开发过程方便、快速scrapy框架能够让我们的爬虫效率更高2 什么是scrapy?文档地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.htmlScrapy使用了Twisted['twɪstɪd]异步网络框架,可以加快我们的下载速度。Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能

2021-02-26 09:47:34 124

原创 2021-02-26

一 Mongodb数据库1 nosql的介绍“NoSQL”⼀词最早于1998年被⽤于⼀个轻量级的fei 关系数据库的名字随着web2.0的快速发展, NoSQL概念在2009年被提了出来NoSQL在2010年⻛⽣⽔起, 现在国内外众多⼤⼩⽹站, 如facebook、 google、 淘宝、 京东、 百度等, 都在使⽤nosql开发⾼性能的产品对于⼀名程序员来讲, 使⽤nosql已经成为⼀条必备技能NoSQL最常⻅的解释是“non-relational”, “Not Only SQL”也被很多⼈接受, 指

2021-02-26 09:47:09 85

原创 2021-02-26

常见的反爬手段和解决思路1 明确反反爬的主要思路反反爬的主要思路就是:尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现。例如:浏览器先请求了地址url1,保留了cookie在 本地,之后请求地址url2,带上了之前的cookie,代码中也可以这样去实现。2 通过headers字段来反爬headers中有很多字段,这些字段都有可能会被对方服务器拿过来进行判断是否为爬虫2.1 通过headers中的User-Agent字段来反爬反扒原理:爬虫默认情况下没有User-Agent解决

2021-02-26 09:46:29 59

原创 2021-02-26

selenium介绍在本### 小结我们会开始系统的了解常见的反爬措施和解决思路,通过在学习selenium模块,它能够帮助我们控制浏览器,能够起到很大程度的反反爬的效果内容selenium的使用打码平台的使用常见的反爬措施和解决思路无头浏览器学习目标1.了解 selenium的作用2.了解 driver的安装过程我们如果想在python爬虫操作动态的数据,就必须学习selenium自动化测试工具, 而使用selenium的前提是需要无头浏览器(无界面浏览器)1 什么是seleniu

2021-02-26 09:45:58 102

原创 2021-02-26

lxml模块的学习学习目标应用 lxml库提取数据方法了解 lxml对数据处理和提取之后的数据类型了解 lxml把element转化为字符串的方法在前面学习了xpath的语法,那么在python爬虫代码中我们如何使用xpath呢? 对应的我们需要lxml1 lxml的安装安装方式:pip install lxml2 lxml的使用2.1 lxml模块的入门使用1.导入lxml 的 etree 库 (导入没有提示不代表不能用)2.利用etree.HTML,将字符串转化为Element对象

2021-02-26 09:44:48 224

原创 2021-02-26

数据提取之xpath学习目标了解 html和xml的区别掌握 xpath获取节点属性的方法掌握 xpath获取文本的方法掌握 xpath查找特定节点的方法1 为什么要学习xpath和lxmllxml是一款高性能的 Python HTML/XML 解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息2 什么是xpathXPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。

2021-02-26 09:44:17 42

原创 2021-02-26

数据提取之正则学习目标掌握 正则表达式的常见语法掌握 re模块的常见用法掌握 原始字符串r的用法1 什么是正则表达式用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。2 正则表达式的常见语法知识点正则中的字符正则中的预定义字符集正则中的数量词正则的语法很多,不能够全部复习,对于其他的语法,可以临时查阅资料,比如:表示或还能使用|练习: 下面的输出是什么?string_a = '<meta http-equiv

2021-02-26 09:43:47 36

原创 2021-02-24

数据的提取方法介绍前面的课程中,我们学习了如何发送发送,对应的,回顾之前的爬虫流程,在发送完请求之后,能够获取响应,这个时候就需要从响应中提取数据了内容数据提取的基础概念和数据分类json字符串的数据提取方法正则表达式的复习xpath语法的学习LXML类库的学习beautifulsoup的学习字典:{‘username’:‘zhangsan’,‘score’:[10,20,30]}json:{“username”:”zhangsan”,”score”:[{“shuxue”:10},{“

2021-02-26 09:37:22 58

原创 2021-02-24

requests模块的深入使用学习目标:能够应用requests发送post请求的方法能够应用requests模块使用代理的方法了解代理ip的分类1 使用requests发送POST请求思考:哪些地方我们会用到POST请求?登录注册( POST 比 GET 更安全)需要传输大文本内容的时候( POST 请求对数据长度没有要求)所以同样的,我们的爬虫也需要在这两个地方回去模拟浏览器发送post请求1.1 requests发送post请求语法:用法:data 的形式:字典1.2 POS

2021-02-24 11:15:06 134

原创 2021-02-24

requests模块的使用介绍前面我们学习了爬虫的基础知识,那么接下来我们就来学习如何在代码中实现我们的爬虫内容requests模块的认识requests_x0008_x0008发送get请求requests获取响应数据requests发送带headers的请求requests发送带参数的请求requests发送POST请求requests使用代理requests处理cookiejs的逆向解析urllib的基本介绍学习目标:了解 requests模块的介绍掌握 request

2021-02-24 11:14:31 61

原创 2021-02-24

字符串相关的复习学习目标:了解 常见字符以及字符集掌握 str,bytes以及互相转换的方法1 字符、字符集字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等字符集(Character set)是多个字符的集合字符集包括:ASCII字符集、GB2312字符集、GB18030字符集、Unicode字符集等ASCII编码是1个字节,而Unicode编码通常是2个字节。UTF-8是Unicode的实现方式之一,UTF-8是它是一种变长的编码方式,可以是1

2021-02-24 11:14:00 41

空空如也

空空如也

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

TA关注的人

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