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