03 2018 档案
摘要:import itchat from itchat.content import * import re msg_infomation = {} @itchat.msg_register([TEXT]) def handle_receive_msg(msg): msg_from = itchat.search_friends(userName=msg['FromUserName'])['...
阅读全文
摘要:#此程序需在有网络的条件下运行 import itchat from itchat.content import * import re @itchat.msg_register([TEXT]) def text_reply(msg): print("..%s.."%msg['Text']) #span去除前后空格 再进行匹配 match = re.search('年...
阅读全文
摘要:#深拷贝 #浅拷贝 #(1)等号 # list1 = [11,22,33,['a','b']] # list2 = list1 # list1.append(44) # print(list1,list2,id(list1),id(list2)) # [11, 22, 33, ['a', 'b'], 44] [11, 22, 33, ['a', 'b'], 44] 43425416 43425...
阅读全文
摘要:#迭代器 ''' 迭代是访问集合元素的一种方式,迭代器是一个能够记住遍历位置的对象 迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束 如果想访问一个元素,需要把这个元素前面的所有元素都遍历后,才可以访问 ''' #1.可迭代的对象,像(1),(2)这些对象称之为可迭代对象(Iterable) #(1)以直接作用for循环的数据类型有:list/tuple/dict/set/st...
阅读全文
摘要:#斐波那契数列:1,1,2,3,5,8,13... def fib(times): a = 0 b = 1 n = 1 while n <= times: # print(b) #返回加到F生成器中,每次都叠加 yield b a,b = b,a+b n += 1 return...
阅读全文
摘要:#生成器 ''' 1.什么是生成器 通过列表推导式,可以直接创建一个列表,但是受到内存限制,列表容量肯定是有限的 而且,创建一个包含100万个元素的列表,占用很大的内存空间,如果我们仅仅需要访问 前面几个,后面元素的占用存储空间就被浪费了 所以,如果列表元素可以按照某种算法推算出来,那么我们就可以在循环当中不断地推导它 生产元素,这样就不必创建完整的list,从而大大节省了存储空间 在p...
阅读全文
摘要:import time def one_hundred_millionA(): start_time = time.time() i = 0 for _ in range(100000000): i = i +1 yield end_time = time.time() print("A--Total time:{}...
阅读全文
摘要:#协程 #~又称微线程 ''' 他是比线程更小的执行单元,因为它自带CPU上下文.这样只要在合适的时机,我们可以把一个协程切换到另外一个协程当中 只要这个过程保存或恢复CPU上下文,那么程序就可以运行 通俗的理解:在一个线程当中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行 yield--表示暂停 ''' import time def A(): ...
阅读全文
摘要:import time from threading import Thread from multiprocessing import Process #计数的方式消耗系统资源 def two_hundred_million(): start_time = time.time() i = 0 for _ in range(200000000): i...
阅读全文
摘要:#ThreadLocal import threading #创建全局ThreadLocal loacl_school = threading.local() class Student(): def __init__(self,name): self.name = name def process_student(name): std = Student(n...
阅读全文
摘要:#异步 ''' 同步调用就是,你喊你朋友吃饭,你朋友正在忙 如果你一直在那等他,等你朋友忙完,你们一块去--同步调用 你喊你朋友吃饭,你朋友正在忙, 如果你自己做你自己的事情,你朋友忙完,找到你,一块去吃饭--异步调用 ''' from multiprocessing import Process,Pool import os,time def download(): print(...
阅读全文
摘要:''' 在多线程环境下,每个线程都有自己的数据,一个线程使用自己的局部变量比使用全局变量好, 因为局部变量只有线程自己能看见,不会影响其他线程,而全局变量的修改必须加锁(阻塞--效率低) 但是在使用局部变量的时候,就在函数间调用的时候,传递起来很麻烦 每个函数一层一层调用这个传递过来的参数,很麻烦,用全局变量,不安全,效率低 每个线程处理不同的student对象,不能共享 ''' impor...
阅读全文
摘要:#多对多 import threading import queue,time,random q = queue.Queue(maxsize=10) count = 1 #生产者 def producer(name): global count while True: if mutex.acquire(): q.put('包子%d'%...
阅读全文
摘要:#生产者与消费者模式 ''' 定义:在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题. 该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度 案例:厨师做包子和顾客吃包子的问题。 ''' import threading import queue,time q = queue.Queue(maxsize=10) #生产者 def producer(name):...
阅读全文
摘要:#生产者与消费者模式,模式解释:比如MVC设计模式 ''' 1.队列 (1)特点:先进先出 (2)python2 VS python3 python2:from Queue import queue python3:from queue import Queue join--阻塞动作 blocked--状态 (3)使用 Python的Queue模块中提供了同步的,线程安全的队列类 a.FIF...
阅读全文
摘要:#1.死锁 ''' 在线程间共享多个资源的时候,如果两个线程分别占有一部分资源,并且同时等待对方资源时,就会造成死锁 尽管死锁很少发生,但一旦发生就会造成应用的停止响应 ''' #2.例子:有两个人分别做"西兰花"和"红烧肉",每个人都需要"锅"和"铲子" import threading,time class XiLanHua_Thread(threading.Thread): def...
阅读全文
摘要:import threading g_num = 0 def fun(): global g_num for i in range(10000000): mutexFlag = mutex.acquire(True) if mutexFlag: g_num += 1 mutex.release() ...
阅读全文
摘要:#1.多线程开发可能遇到的问题 ''' 假设两个两个线程t1\t2都要对num进行操作(增1),t1和t2都各自对num修改10次,num最终的值为增20 ''' import threading,time #全局变量 g_num = 0 def w1(): global g_num for i in range(100000000): g_num+=1 ...
阅读全文
摘要:#在threading模块当中定义了一个Lock类,可以方便的使用锁定: # #1.创建锁 # mutex = threading.Lock() # # #2.锁定 ''' mutex.acquire(True/False) True:如果所要获取的资源已经"锁定",表示当前线程处地等待(阻塞),直到获取到这个锁为止--默认值 False:不阻塞,即不管本次调用能够成功上锁,都不会卡在这,而是...
阅读全文
摘要:#多进程VS多线程 #登录多个qq账号就是多个进程,正常情况下一个软件就是一个进城费 #打开两个以上qq聊天窗口就是多线程 #功能: #进程,能够完成多任务,比如一台能够同时运行多个qq #线程,能够完成多任务,比如一个qq中的多个聊天窗口 #定义 #进程是系统进行资源分配和调试的一个独立单位 #线程是进程的一个实体,是CPU调用和分派的基本单位,它比进程更小的能够独立运行的基本单位 #线程基...
阅读全文
摘要:import copy a = 11 print(id(a))#和下面的id号不一样 b = a a = 12 print(b,id(a),id(b))#11 1810457152 1810457120 #输出结果:11 无影响 #浅拷贝copy.copy #1.=赋值 download_list = [11,22,33] copy_list = download_list downlo...
阅读全文
摘要:#列表当做实参传递到线程中 import threading,time,random,copy def work1(download_list,finish_list): #每次从当前下载列表当中去取第一个元素进行下载 while True: file = download_list[0] print("--in work1--download:%...
阅读全文
摘要:#多线程---全局变量---共享全局变量 #多线程可以对全局变量进行修改,修改后的结果会影响下一个线程 #进程不可以共享全局变量,子进程是复制父进程的全局变量,修改后互不影响 from threading import Thread import time,random g_num = 100 def work1(): global g_num for i in range(3...
阅读全文
摘要:import threading #线程名字 # class MyThread(threading.Thread): # # def run(self): # print("%s线程正在下载..."%self.name) # # if __name__ == "__main__": # t = MyThread(name="downloadThread") # ...
阅读全文
摘要:#传参数 import threading class MyThread(threading.Thread): def __init__(self,fileName): threading.Thread.__init__(self) self.fileName = fileName print("开启线程,下载%s文件"%fileName...
阅读全文
摘要:#用自己定义的线程完成 import threading,time,random class sing(threading.Thread): def run(self): for i in range(3): print("正在唱歌%d"%i) time.sleep(random.random()) class dance...
阅读全文
摘要:#创建线程的第二种写法 #1.自定义一个类 #2.继承Thread #3.重写run()方法 import threading,time,random class MyThread(threading.Thread): def run(self): for i in range(3): time.sleep(random.random()) ...
阅读全文
摘要:import threading,time,random #查看线程的数量 def sing(): for i in range(3): print('正在唱歌....%d'%i) time.sleep(random.random()*10) def dance(): for i in range(3): print('正在跳舞....
阅读全文
摘要:import time,random,threading def download(fileName): print('开始下载%s文件'%fileName) time.sleep(random.random()*10) print('%s文件下载完成'%fileName) # 单线程(默认主线程) # if __name__== "__main__": # ...
阅读全文
摘要:1 while True: 2 str_num = input("Enter number:") 3 4 flag = True 5 dotCount = 0 6 if str_num[0] == '-': 7 str_num_copy = str_num[1:] 8 else: 9 str_num_co...
阅读全文
摘要:#进程池中的Queue """ 如果要用Pool创建进程,就需要multiprocessing.Manager()中的Queue() 而不是multiprocessing.Queue() """ from multiprocessing import Manager,Pool import os def write(q): print('writer启动') for ch in...
阅读全文
摘要:#在父进程中创建两个子进程,一个往Queue写数据,一个从Queue里读数据 from multiprocessing import Queue,Process import time,random #往消息队列中写入数据 写入的进程 通过消息队列Queue 作为中间人来实现 def write(q): for value in ["A","B","C","D"]: p...
阅读全文
摘要:#进程间通讯--Queue #Process有时需要通信的,操作系统提供了很多机制来实现进程之间的通讯 #而Queue就是其中一个 #1.Queue的使用 #可以使用multiprocessing模块下的Queue实现多进程之间的数据传递, #Queue本身就是一个消息队列 from multiprocessing import Queue #每个进程都可以和消息队列对话和拿东西(读取信息...
阅读全文
摘要:#进程池 """ 当需要创建子进程数量不多的时候,可以直接利用multiprocessing 中的Process动态生成多个进程,但是如果上百甚至上千个任务, """ from multiprocessing import Pool import os,time,random def download(i): print("(%s)ID号为:%d的进程开始执行"%(i,os.getp...
阅读全文
摘要:#定义一个类 继承Process类 from multiprocessing import Process import os import time class jiecheng(Process): def __init__(self,num): Process.__init__(self) self.num = num #一算一个数的阶乘 ...
阅读全文
摘要:#定义一个类 继承Process类 from multiprocessing import Process import os class Download(Process): def __init__(self,num): Process.__init__(self) self.num = num # print(type(self.nu...
阅读全文
摘要:#定义一个类 继承Process类 from multiprocessing import Process import os import time class Download(Process): def __init__(self,interval): Process.__init__(self) self.interval = interval ...
阅读全文
摘要:''' 跨平台的进程创建模块(multiprocessing) 支持跨平台 :window/linux multiprocessing提供一个Process类来代表一个进程对象 ''' from multiprocessing import Process import os def download(filename,type,**kwargs): #这里是子进程的id Ret...
阅读全文
摘要:代码要多敲 注释邀清晰 虽然简单 敲一敲 增长不少 可以为以后的工作提供一些方便
阅读全文
摘要:代码要多敲 注释要清晰 其中区号没有拿取出来 看到的朋友可以作为练习 ,有好的方法可以在下面留言
阅读全文
摘要:代码要多敲 注释要清晰 最后的两种方法,没有实现我想要的结果 有知道的朋友,给我留言吧
阅读全文
摘要:from selenium import webdriver import time from bs4 import BeautifulSoup class douyuSelenium(): #初始化,启动斗鱼浏览器 def setUp(self): self.driver = webdriver.PhantomJS() #获取斗鱼房间信息 ...
阅读全文
摘要:代码要多敲 注释要清晰 哪怕再简单
阅读全文
摘要:代码要多敲 注释要清晰 哪怕很简单 对基础1和2 的补充 可以结合1和2来学习
阅读全文
摘要:学python理念 : 代码要多敲 一定要多敲 哪怕很基础 注释要清晰 由于基础1有一些注释写的很详细, 在这里有些注释没有写的很详细 可以配合基础1一起学习哦
阅读全文
摘要:#使用requests模块 #1.登录lagou #2.登录人人,保存个人首页 import requests from urllib import parse #hashlib是MD5加密的一个python内置模块 #导入hashlib模块 import hashlib ''' python提供了一个进行hash加密的模块:hashlib 下面主要记录下其中的md5加密方式 >>> impo...
阅读全文
摘要:这是一种比较好的反反爬技术
阅读全文
摘要:用webdriver模仿浏览器 爬取豆瓣python书单 其中运用到os 模块 作用是生成文件夹 存储爬取的信息 etree 用于xpath解析内容 详细代码如下 可用我的上一篇博客存取到excel当中
阅读全文
摘要:# 1.把之间案例,使用bs4,正则,xpath,进行数据提取。 # 2.爬取拉钩网上的所有python职位。 from urllib import request,parse import json,random #导入xlsxwriter 主要用于生成excel表格对象 import xlsxwriter #创建python的职位类 class python_position: ...
阅读全文
摘要:# 2.爬取拉钩网上的所有python职位。 from urllib import request,parse import json,random def user_agent(page): #浏览器列表,每次访问可以用不同的浏览器访问 user_agent_list = [ 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWeb...
阅读全文
摘要:import re #\. 是刚需必须有 d+ 必须一个或多个数字 pattern = re.compile(r'\d+\.\d*') d = pattern.finditer('3.141592653 PI 100 10001.11 3. .8 0.9') print(d) for item in d: print(item)
阅读全文
摘要:import re title = 'hello, 你好,world' print(title) title = u'hello, 你好,world' print(title) #汉字匹配 +的意思是找到一个汉字 继续找直到找完 然后统一打印出来 #如果没有+号 则一个汉字一个汉字打印出来 pattern = re.compile(u'[\u4e00-\u9fa5]+') s = pat...
阅读全文
摘要:import re #\s 空格 +号表示至少出现一次 # path = 'C:\\Users\\cz\Desktop\py06\\PY6_Day01\\爬虫作业\\2018_03_07\\05_split.py' #前面加r表示元字符 path = r'C:\Users\cz\Desktop\py06\PY6_Day01\爬虫作业\2018_03_07\05_split.py' #用\做...
阅读全文
摘要:import re # unicode 编码匹配范围[u4e00-u9fa5] pattern = re.compile('(\w+) (\w+)') s = 'hello 123,hello 456' s_list = pattern.findall(s) print(s_list) s_list = pattern.sub('hello world',s) print(s_list)...
阅读全文
摘要:import re #\. 是刚需必须有 d+ 必须一个或多个数字 pattern = re.compile(r'\d+\.\d*') d = pattern.finditer('3.141592653 PI 100 10001.11 3. .8 0.9') print(d) for item in d: print(item)
阅读全文
摘要:import re pattern = re.compile(r'\d+') s = pattern.search('hello 123456 789') print(s.group()) s = pattern.findall('hello 13456 789') print(s) # str = 'I love You!' # def daoxuprint(str): # ...
阅读全文
摘要:import re # #1.search和match的区别 # pattern = re.compile(r'\d+') # #match从头开始匹配 # m = pattern.match('onetwo12threefour34',6) # print(m) # #(在指定范围内查找 默认全局) 查找 只查一次 后面的8是从位置8开始只查一次 # s = pattern.search('...
阅读全文
摘要:import re #步骤1:生成pattern对象 # pattern = re.compile(r'\d+')#表示匹配一个或者多个数字 #步骤2: # m = pattern.match('one1two2 ten10')#从头匹配 match括号里面是要匹配的对象 # print(m) #None --没有数字头 # m = pattern.match('1one1') # pri...
阅读全文
摘要:import re #\b元字符 代表单词开头或者结尾 也就是单词的分界处 不代表标点符号,空格,换行符 # pattern = re.compile(r'\bwe\b') # s = pattern.findall('we We well welcome') # print(s) #匹配we和work之间的所有内容 用到元字符 # . 匹配除了换行符的任意字符 # * 含义是 * 前...
阅读全文
摘要:#将都把电影排行榜中的所有类型的前十部,保存到文件中 from urllib import request,parse import json # base_url = "https://movie.douban.com/j/chart/top_list?" # data = { # 11:'剧情',24:'喜剧',5:'动作',13:'爱情',17:'科幻',25:'动画', # ...
阅读全文
摘要:''' Request URL:https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=20&limit=20 type:11 interval_id:100:90 action: start:20 limit:20 ''' from urllib import request i...
阅读全文
摘要:''' j---Request URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule jo--Request URL:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule job-Request URL:http://...
阅读全文
摘要:#注册一个开心网的账号,并且爬取主页内容 from urllib import request,parse from http import cookiejar import ssl ssl._create_default_https_context = ssl._create_unverified_context #request.urlopen()#并不能够保存cookie #(一)定义请...
阅读全文
摘要:#SSL--校验网站证书 #一、什么是SSL证书 from urllib import request #ssl免验证 import ssl ssl._create_default_https_context = ssl._create_unverified_context base_url = "https://www.csls.cdb.com.cn/" response = req...
阅读全文
摘要:from urllib import request from urllib import parse,request #在python当中使用用户名和密码进行登录,然后保存cookie from http import cookiejar cookie = cookiejar.CookieJar() #生成cookie对象 cookie_handler = request.HTTPCook...
阅读全文
摘要:from urllib import request #(1) base_url = "http://www.renren.com/310303067/profile" headers = { "cookie":"anonymid=jcfxyb8b3a1gal; _r01_=1; ln_uact=liulidong@tju.edu.cn; ln_hurl=http://hdn.xni...
阅读全文
摘要:from urllib import request,parse import json # 翻译函数 def fanyi(msg): #参数封装 data = { "kw": content } #参数拼接以及转码 data = parse.urlencode(data) #请求地址 base_url = "htt...
阅读全文
摘要:#批量爬取贴吧页面数据 #第1页: https://tieba.baidu.com/f?kw=%E6%97%85%E8%A1%8C%E9%9D%92%E8%9B%99&ie=utf-8&pn=0 #第2页:https://tieba.baidu.com/f?kw=%E6%97%85%E8%A1%8C%E9%9D%92%E8%9B%99&ie=utf-8&pn=50 #第3页 https://ti...
阅读全文
摘要:#汉字转码、多个参数拼接 from urllib import request base_url = "http://www.baidu.com/s?" content = input("请输入你要搜索的内容:") qs = { "wd":content, "rsv_sp":1 } #将汉字转成unicode码 from urllib import parse qs =...
阅读全文
摘要:''' 作业2: 判断user-agent,判断是否是正常浏览器访问 ''' from urllib import request base_url = "http://www.langlang2017.com" headers = { "connnction":"keep-alive", "USer_Agent":"mozilla/5.0 (Windows nt 6.1; ...
阅读全文
摘要:from urllib import request import random def spider(url): user_agent_list = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537....
阅读全文
摘要:#请求头 #1、引入模块 from urllib import request #2、操作 #(1)定义目标url base_url = "http://www.langlang2017.com/index.html" #请求头部---request headers headers = { "Accept":"text/html,application/xhtml+xml,a...
阅读全文
摘要:#使用urllib库,将langlang2017全站网页请求并保存 #1、引入模块 from urllib import request from urllib import error #2、操作 #(1)创建url base_url = "http://www.langlang2017.com/route.html" try: # (2)请求url reponse =...
阅读全文
摘要:#urllib库的基本使用 ''' 1、网页抓取 就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 python2:urllib2 python3:urllib.request ''' #1、引入模块 from urllib import request #2、操作 #(1)定义目标url base_url = "http://www.langlang2017.com/in...
阅读全文

浙公网安备 33010602011771号