11 2018 档案

摘要:基于tcp的subprocess操作: 服务端: import socketserver import subprocess class Myserver(socketserver.BaseRequestHandler): def handle(self): print('3次握手conn is', 阅读全文
posted @ 2018-11-29 12:01 风不再来 阅读(130) 评论(0) 推荐(0) 编辑
摘要:'''客户端''' import socket,select #####进行封装,将socket对象和要返回的url,和回调函数进行一下封装 class Httprequest(): def __init__(self,sk,host,callback): self.socket=sk self.h 阅读全文
posted @ 2018-11-29 11:27 风不再来 阅读(161) 评论(0) 推荐(0) 编辑
摘要:IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: 当客户处理多个描述符时(一般是交互式输入和网络套接口),必须使用I/O复用。 当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 如果一个TCP服务器既要处理监听套接口,又要 阅读全文
posted @ 2018-11-28 23:37 风不再来 阅读(1722) 评论(0) 推荐(1) 编辑
摘要:asyncio: # import asyncio # def fun1(): # print('start') # yield from asyncio.sleep(1) # print('end') # # tasks=[ # fun1(),fun1() # ] # loop=asyncio.g 阅读全文
posted @ 2018-11-28 17:59 风不再来 阅读(3573) 评论(0) 推荐(0) 编辑
摘要:'''方式一:线程池的方式'''# from concurrent.futures import ThreadPoolExecutor# import requests# import time### def task(url):# response=requests.get(url)# print 阅读全文
posted @ 2018-11-28 16:50 风不再来 阅读(525) 评论(0) 推荐(0) 编辑
摘要:# info=conn.recv(8096) # payload_len=info[1] &127 ##拿到这payload的值 # if payload_len==126: # extend_payload_len==info[2:4] #这个是头部信息,这个会往后面多占16位,就是前面的2个字节加上后面加上的4个字节,头部信息就是4个字节 # mask=info[4:8] ... 阅读全文
posted @ 2018-11-25 16:36 风不再来 阅读(346) 评论(0) 推荐(0) 编辑
摘要:第一种情况:没有设置缓存:执行相对应的setitem等方法进行,保存到字典里面 cookies_dic={}print(cookies_dic)class Session(): def __init__(self,handler): self.user_id=None self.handler=ha 阅读全文
posted @ 2018-11-25 11:28 风不再来 阅读(501) 评论(0) 推荐(0) 编辑
摘要:grep是强大的文本搜索工具,他可以对文件逐行查看,如果找到匹配的模式,就可以打印出包含次模式的所有行,并且支持正则表达式 find查找文件的grep是来查找字符串的,文件的内容 grep 文件的内容 在什么目录下面 常用参数:-c 不打印匹配的行的内容,而是打印出匹配的行数grep -c sudo 阅读全文
posted @ 2018-11-24 15:05 风不再来 阅读(852) 评论(0) 推荐(0) 编辑
摘要:echo:输出echo 'ls' 替换变量: $(()): root@DESKTOP-BMKLFR3:/home/shell# a=$((32+56456))root@DESKTOP-BMKLFR3:/home/shell# echo $a56488 $(): root@DESKTOP-BMKLFR 阅读全文
posted @ 2018-11-24 13:52 风不再来 阅读(333) 评论(0) 推荐(0) 编辑
摘要:import tornado.ioloop import tornado.web from tornado.concurrent import Future import time from tornado import gen #fututre模块进行异步的请求操作 class MainHandler(tornado.web.RequestHandler): ... 阅读全文
posted @ 2018-11-23 16:25 风不再来 阅读(157) 评论(0) 推荐(0) 编辑
摘要:第一种方式: import tornado.ioloop import tornado.web from tornado import gen from tornado.concurrent import Future import time #########异步效果1,iploop class MainHandler(tornado.web.RequestHandler): @ge... 阅读全文
posted @ 2018-11-23 13:53 风不再来 阅读(211) 评论(0) 推荐(0) 编辑
摘要:http:socket实现,短连接,请求响应websocket,socket实现,双工通信,请求响应socket创建连接,不断开 原理讲解:socket:客户端:(浏览器)2.先去请求连接,连接服务端(ip和端口)4.客户端发送数据过去,向服务端发送特殊的值(客户端自己生成的随机字符串),加密的sh 阅读全文
posted @ 2018-11-23 11:03 风不再来 阅读(185) 评论(0) 推荐(0) 编辑
摘要:strlen(name)查看字节长度 strlen a incr:统计登录数127.0.0.1:6379> set login 0OK127.0.0.1:6379> incr login(integer) 1127.0.0.1:6379>127.0.0.1:6379>127.0.0.1:6379> 阅读全文
posted @ 2018-11-22 21:52 风不再来 阅读(163) 评论(0) 推荐(0) 编辑
摘要:keys *这个可以全部的值del name 这个可以删除某个127.0.0.1:6379> del s_set(integer) 1127.0.0.1:6379> keys z*(匹配)1) "z_set2"2) "z_set"127.0.0.1:6379> exists sex(integer) 阅读全文
posted @ 2018-11-22 21:50 风不再来 阅读(135) 评论(0) 推荐(0) 编辑
摘要:set操作: 127.0.0.1:6379> sadd s_set 1 4 54 43 654 434(可以设置这个集合放值)(integer) 6127.0.0.1:6379> smembers s_set1) "1"2) "4"3) "43"4) "54"5) "434"6) "654" 127 阅读全文
posted @ 2018-11-22 21:47 风不再来 阅读(219) 评论(0) 推荐(0) 编辑
摘要:列表操作127.0.0.1:6379> lpush st xiao ni(从左边存数据)(integer) 2127.0.0.1:6379> lrange st 0 -11) "ni"2) "xiao"rpush(从右边存数据)127.0.0.1:6379> llen st(integer) 2 查 阅读全文
posted @ 2018-11-22 21:46 风不再来 阅读(257) 评论(0) 推荐(0) 编辑
摘要:方法一:# class MyType(type):# def __init__(self,*args,**kwargs):# print('132')# super(MyType,self).__init__(*args,**kwargs)# ###执行父类的init方法### class Base 阅读全文
posted @ 2018-11-21 14:18 风不再来 阅读(473) 评论(0) 推荐(0) 编辑
摘要:from sqlalchemy.ext.declarative import declarative_base##拿到父类from sqlalchemy import Column##拿到字段from sqlalchemy import create_engine ##创建引擎from sqlalc 阅读全文
posted @ 2018-11-20 05:09 风不再来 阅读(289) 评论(0) 推荐(0) 编辑
摘要:from sqlalchemy.ext.declarative import declarative_base##父类from sqlalchemy import Column###字段对象from sqlalchemy import Text,String,Integerfrom sqlalche 阅读全文
posted @ 2018-11-20 02:06 风不再来 阅读(188) 评论(0) 推荐(0) 编辑
摘要:model表: from django.db import models# Create your models here.class UserInfo(models.Model): useranme=models.CharField(max_length=32) password=models.C 阅读全文
posted @ 2018-11-15 23:26 风不再来 阅读(236) 评论(0) 推荐(1) 编辑
摘要:最原始的请求url_list=[ 'https://www.cnblogs.com/yunxintryyoubest/category/1338759.html', 'https://www.cnblogs.com/', 'http://www.baidu.com']# import request 阅读全文
posted @ 2018-11-15 00:19 风不再来 阅读(515) 评论(0) 推荐(0) 编辑
摘要:爬虫:(在这里不用配置start_url,直接可以取redis里面取start_url,可以多个) from scrapy_redis.spiders import RedisSpider # class ChoutiSpider(scrapy.Spider): class ChoutiSpider(RedisSpider): name = 'baidu'##在这里设置了这个name... 阅读全文
posted @ 2018-11-14 04:06 风不再来 阅读(3405) 评论(0) 推荐(0) 编辑
摘要:首先先谈谈深度优先和广度优先的定义 深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的 阅读全文
posted @ 2018-11-14 02:04 风不再来 阅读(2622) 评论(1) 推荐(0) 编辑
摘要:settings里面的配置:'''当下面配置了这个(scrapy-redis)时候,下面的调度器已经配置在scrapy-redis里面了'''##########连接配置######## REDIS_HOST = '127.0.0.1' REDIS_PORT = 6379 # REDIS_PARAMS = {'password':'xxxx'} #Redis连接参数,默认:REDIS_P... 阅读全文
posted @ 2018-11-13 20:22 风不再来 阅读(3527) 评论(0) 推荐(1) 编辑
摘要:不使用scrapy-redis的: 最初始的方法: settings里面: settings里面: 第一种去重方法:原生的scrapy-redis去重: settings里面: DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'##自 阅读全文
posted @ 2018-11-13 04:13 风不再来 阅读(262) 评论(0) 推荐(0) 编辑
摘要:''' extract()拿到的是字符串 xpath拿到的是selector对象,可以继续往下面找标签 //是孙子,子子孙孙,都可以找到 /是孩子 @是找属性 .是在当前的标签下面往下找 extra_first()只取第一个值 ./儿子(当前标签下面) .//当前标签下面的孙子,子子孙孙都可以 ex 阅读全文
posted @ 2018-11-12 07:14 风不再来 阅读(408) 评论(0) 推荐(0) 编辑
摘要:from scrapy import signals engine_started = object() engine_stopped = object() spider_opened = object() spider_idle = object() 爬虫被闲置的时候 spider_closed = object() spider_error = object() request_sc... 阅读全文
posted @ 2018-11-12 04:09 风不再来 阅读(173) 评论(0) 推荐(0) 编辑
摘要:不在终端运行爬虫方法:不在终端运行爬虫,可以在最外层项目的下创建start.py文件导入如下配置:直接运行就可以了 自定制scrapy命令方法: 在settings里面的配置:COMMANDS_MODULE='scrapyproject1.commands' 首先在你要启动的项目下面(spider的 阅读全文
posted @ 2018-11-12 01:56 风不再来 阅读(172) 评论(0) 推荐(0) 编辑
摘要:执行顺序: 找到这个爬虫,并执行爬虫里面的start_requets的方法,得到一个迭代器,start_request默认的回调函数是parse迭代器的里面的作用是会循环获取到requets对象,requtes对象里面封装了要访问的url和回调函数将所有的request对象(任务)放到调度器里面,供 阅读全文
posted @ 2018-11-11 23:08 风不再来 阅读(314) 评论(0) 推荐(0) 编辑
摘要:去重原理:相当于是写了集合self.vister_urls=set(),把所有的url放进去当执行yield Requets的时候就会执行,进行判断,看是否这个访问的url在这个集合里面,如果在的话,就不添加进去了 from scrapy.utils.request import request_f 阅读全文
posted @ 2018-11-10 18:34 风不再来 阅读(394) 评论(0) 推荐(0) 编辑
摘要:执行顺序:pipeline写 pipeline类class Scrapyproject1Pipeline(object): def process_item(self, item, spider): 写items类:class Scrapyproject1Item(scrapy.Item): url 阅读全文
posted @ 2018-11-10 07:55 风不再来 阅读(1159) 评论(0) 推荐(0) 编辑
摘要:批量添加(修改)数据: hmsethmset(name,dic)后面是字典不用加*,直接是这样就可以批量添加数据进来 批量查看数据: keys:拿到所有匹配的数据出来print(conn.keys('User_Shop_Car_1_*'))'''[b'User_Shop_Car_1_4', b'Us 阅读全文
posted @ 2018-11-08 06:33 风不再来 阅读(784) 评论(0) 推荐(0) 编辑
摘要:查询: 第一种方式:dic={'23':'sefsf','43':'3443','233':'gdfgg','name':'ybxu'}models.Course.objects.filter(**dic)##条件,只能是and,中间的条件是用and里来连接的 第二种方式:from django.d 阅读全文
posted @ 2018-11-07 09:13 风不再来 阅读(223) 评论(0) 推荐(0) 编辑
摘要:字符串:join(拼接字符串)val='3243fsf'.join('fsfsf')print(val)结果:f3243fsfs3243fsff3243fsfs3243fsff 字典:update(添加字典进来)dic1={'anme':'esfsf'}dic2={'age':20}dic1.upd 阅读全文
posted @ 2018-11-07 04:36 风不再来 阅读(225) 评论(0) 推荐(0) 编辑
摘要:列表操作:如:[102, 0, 43, 102, 43]lpush左插入rpushblpop,加了b的都会阻塞,当没有数据的时候,会阻塞住,加timeout就可以设置阻塞的时间,返回Nonebrpoplpop左边获取rpop右边获取lrange顾头顾尾lindex:val1 = conn.linde 阅读全文
posted @ 2018-11-05 01:28 风不再来 阅读(168) 评论(0) 推荐(0) 编辑
摘要:在select里面查询到的数据orm里面的要一一对应UserInfo.objects.raw('select id as nid from '其他表')后面的select的不一定是UserInfo表,有可能是是其他表,只要字段名字一样就可以 如果select的是其他表的时候,必须将名字设置为当前Us 阅读全文
posted @ 2018-11-04 21:46 风不再来 阅读(2756) 评论(0) 推荐(0) 编辑
摘要:第一种方式:RedisCache(redis缓存) ##redis配置# CACHES={# 'default':{#名字default的cache# 'BACKEND':'django_redis.cache.RedisCache',# 'LOCATION':'redis://127.0.0.1: 阅读全文
posted @ 2018-11-04 19:04 风不再来 阅读(1453) 评论(0) 推荐(0) 编辑
摘要:settings里面: 阅读全文
posted @ 2018-11-04 17:44 风不再来 阅读(1888) 评论(0) 推荐(0) 编辑
摘要:Python连接Redis服务器 pool=redis.ConnectionPool(host='127.0.0.1', port=6379,max_connections=1000) conn=redis.Redis(connection_pool=pool) 创建连接池 import redis 阅读全文
posted @ 2018-11-04 17:40 风不再来 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:class Foo(): def __init__(self): self.name=None self.age=19 self.addr='上海' @property def dict(self): #传过来的self是对象,Foo,直接__dict__就是打印出字典的形式 return self 阅读全文
posted @ 2018-11-04 02:05 风不再来 阅读(1788) 评论(0) 推荐(0) 编辑
摘要:new方法(构造方法)是在函数一加载的时候就被执行,在init方法执行之前被执行 def __new__(cls,*args,**kwargs): if kwargs.pop('many',False)##判断many是true还是flasereturn cls.many_init(*args,** 阅读全文
posted @ 2018-11-03 06:22 风不再来 阅读(643) 评论(0) 推荐(0) 编辑