python编程
文章平均质量分 82
python基础知识
weixin_35688430
这个作者很懒,什么都没留下…
展开
-
python 爬虫(三十八)之分布式
一 介绍原来scrapy的Scheduler维护的是本机的任务队列(存放Request对象及其回调函数等信息)+本机的去重队列(存放访问过的url地址)所以实现分布式爬取的关键就是,找一台专门的主机上运行一个共享的队列比如Redis,然后重写Scrapy的Scheduler,让新的Scheduler到共享队列存取Request,并且去除重复的Request请求,所以总结下来,实现分布式的关键就是三点:#1、共享队列#2、重写Scheduler,让其无论是去重还是任务都去访问共享队列#3、为Sc原创 2021-02-01 16:33:05 · 92 阅读 · 0 评论 -
python 爬虫(三十七)之登陆
破解加密算法模拟登陆1.1 目标站点网址https://www.zhihu.com/signin?next=%2F知乎上所有的数据都是得登录之后才能获取的,所以我们首先得用爬虫模拟知乎的登录操作1.2 站点分析1.2.1 登录过程分析首先我们访问登录页面的时候,服务器会给我们返回一系列的cookie这些cookie我们需要保存下来接着,咱点击密码登录会发现,如下的一个验证码的请求:这个请求是用来询问服务器,我需不需要填写验证码,'show_captcha’为false,则不需要验证码原创 2021-02-01 16:01:04 · 4079 阅读 · 0 评论 -
python 框架(三十六)之Django和DRF
下面这两张图分别是Django的框图和Django REST Framwork的框图。DjangoDjango REST FramworkDjango在Python的web框架中是出了名的重,而DRF即Django REST Framwork更重,这使得广大小伙伴在做完了Django的Tutorial和DRF的Tutorial之后仍云里雾里。要知道,相比于flask只需要一个装饰器和一个函数就可以把服务跑起来,这个学习路线确实是有点繁琐。而且在花时间跑完这些tutorial之后,却陷入了一个更大的疑原创 2021-02-01 15:26:26 · 1083 阅读 · 0 评论 -
python Django framework框架(三十五)之请求响应组件
第二章:请求响应组件02-01 请求模块请求模块1、CBV源码分析# 视图层from django.shortcuts import render, HttpResponsefrom django.views import Viewclass CBVTest(View): # 通过调度(dispatch)分发请求 def dispatch(self, request, *args, **kwargs): pass super().dispatch原创 2021-02-01 14:00:22 · 143 阅读 · 1 评论 -
python Django framework框架(三十四)之中间件
Django中间件一 什么是中间件中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能Django中间件的定义:Middleware is a framework of hooks into Django’s request/response processing. It’s a light, low-level “plugin” system for glob原创 2021-01-25 13:55:20 · 210 阅读 · 0 评论 -
python Django framework框架(三十三)之cookie和Session
cookieCookie的由来大家都知道HTTP协议是无状态的。无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的。状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留。会话中产生的数据又是我们需要保存的,也就是说要“保持状态”。因此Cookie就是在这样一个场景下诞生。什么是Coo原创 2021-01-25 13:54:58 · 86 阅读 · 0 评论 -
python Django framework框架(三十三)之Form
Form介绍我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。Django form组件就实现了上面所述的功能。总结一下,其实form组件的主要功能如下:生成页面可用的HTML标签对用户提交的数据进行校验保留上次输入内容普通方式手写注册功能views.原创 2021-01-24 19:14:44 · 130 阅读 · 0 评论 -
python Django framework框架(三十三)之自定义分页器
批量插入数据批量插入数据项目需求:浏览器中访问django后端某一条url(如:127.0.0.1:8080/index/),实时朝数据库中生成一千条数据并将生成的数据查询出来,并展示到前端页面urls.pyfrom django.conf.urls import urlfrom app01 import viewsurlpatterns = [ url(r'^get_book/',views.get_book)]models.pyfrom django.db import mo原创 2021-01-24 18:59:26 · 94 阅读 · 0 评论 -
python Django framework框架(三十二)之分页器
1 Django的分页器(paginator)简介在页面显示分页数据,需要用到Django分页器组件from django.core.paginator import PaginatorPaginator对象: paginator = Paginator(user_list, 10)# per_page: 每页显示条目数量# count: 数据总个数# num_pages:总页数# page_range:总页数的索引范围,如: (1,10),(1,200)# page:原创 2021-01-24 18:49:46 · 116 阅读 · 0 评论 -
python Django framework框架(三十一)之ORM进阶
一 QuerySet对象1.1可切片使用Python 的切片语法来限制查询集记录的数目 。它等同于SQL 的LIMIT 和OFFSET 子句。Entry.objects.all()[:5] # (LIMIT 5)Entry.objects.all()[5:10] # (OFFSET 5 LIMIT 5)不支持负的索引(例如Entry.objects.all()[-1])。通常,查询集 的切片返回一个新的查询集 —— 它不会执行查询。1.2可迭代articleList=mode原创 2021-01-24 18:38:39 · 116 阅读 · 0 评论 -
python Django framework框架(三十)之ORM常用字段和参数
常用字段和参数1 ORM字段AutoFieldint自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。IntegerField一个整数类型,范围在 -2147483648 to 2147483647。CharField字符类型,必须提供max_length参数, max_length表示字符长度。DateField日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。Dat原创 2021-01-24 18:27:46 · 267 阅读 · 0 评论 -
python 模块使用(二十九)之xlutils
xlutils的使用导语xlrd和xlwt模块主要是针对excel表格的读取和写入,但是一些操作和处理数据的操作还是需要根据xlutils这个模块来实现。1、拷贝原文件import xlrdfrom xlutils.copy import copyworkbook = xlrd.open_workbook('test.xlsx') # 打开工作薄new_workbook = copy(workbook) # 将获取的xlrd文件对象,拷贝为xlwt对象new_workbook.sav原创 2021-01-24 18:14:49 · 2756 阅读 · 1 评论 -
python 模块使用(二十八)之xlrd与xlwt
xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入。安装`pip install xlrd``pip install xlwt`xlrd模块使用excel文档名称为联系人.xls,内容如下:(1) 打开excel文件并获取所有sheet`import` `xlrd` `# 打开Excel文件读取数据``data ``=` `xlrd.open_workbook(``'联系人.xls'``)` `sheet_name ``=` `data.sheet_name原创 2021-01-24 18:02:38 · 295 阅读 · 0 评论 -
python Django framework框架(二十七)之JSON
AJAX准备知识:JSON什么是 JSON ?JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)JSON 是轻量级的文本数据交换格式JSON 独立于语言 *JSON 具有自我描述性,更易理解* JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。合格的json对象(json只认双引的字符串格式):["one", "two", "th原创 2021-01-24 17:28:06 · 178 阅读 · 0 评论 -
python Django framework框架(二十六)之Haystack
Haystack1.什么是HaystackHaystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持Solr,Elasticsearch,Whoosh, **Xapian搜索引擎它是一个可插拔的后端(很像Django的数据库层),所以几乎你所有写的代码都可以在不同搜索引擎之间便捷切换2.安装pip install django-haystack3.配置添加Haystack到INSTALLED_APPS跟大多数Django的应用一原创 2021-01-24 17:12:22 · 240 阅读 · 0 评论 -
python Django framework框架(二十五)之Celery
Celery1.什么是CleleryCelery是一个简单、灵活且可靠的,处理大量消息的分布式系统专注于实时处理的异步任务队列同时也支持任务调度Celery架构Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。消息中间件Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等任务执行单元Worker是Celery原创 2021-01-24 17:03:04 · 157 阅读 · 1 评论 -
python 操作Kafka (二十七)
应用往Kafka写数据的原因有很多:用户行为分析、日志存储、异步通信等。多样化的使用场景带来了多样化的需求:消息是否能丢失?是否容忍重复?消息的吞吐量?消息的延迟?kafka介绍Kafka属于Apache组织,是一个高性能跨语言分布式发布订阅消息队列系统[7]。它的主要特点有:以时间复杂度O(1)的方式提供消息持久化能力,并对大数据量能保证常数时间的访问性能;高吞吐率,单台服务器可以达到每秒几十万的吞吐速率;支持服务器间的消息分区,支持分布式消费,同时保证了每个分区内的消息顺序;轻量级,支持实原创 2020-12-16 17:05:33 · 12209 阅读 · 1 评论 -
python 操作RabbitMQ (二十六)
RabbitMQRabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消 息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发原创 2020-12-16 16:33:53 · 232 阅读 · 0 评论 -
python 操作Redis (二十五)
Redisredis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数原创 2020-12-16 15:56:51 · 134 阅读 · 0 评论 -
python Django framework框架(二十四)之认证
三大认证组件认证组件1、authenticationCopy"""系统:session认证rest_framework.authentication.SessionAuthenticationajax请求通过认证:cookie中要携带 sessionid、csrftoken,请求头中要携带 x-csrftoken第三方:jwt认证 rest_framework_jwt.authentication.JSONWebTokenAuthenticationajax请求通过认证:请求头中要携原创 2020-12-15 13:28:54 · 241 阅读 · 1 评论 -
python Django framework框架(二十三)之视图
视图组件两个视图基类1、APIViewCopyrest_framework.views.APIViewAPIView是REST framework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格式;任何原创 2020-12-15 13:23:03 · 162 阅读 · 0 评论 -
python Django framework框架(二十二)之序列化
序列化组件序列化器-Serializer1定义序列化器Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。例如,我们已有了一个数据库模型类BookInfoclass BookInfo(models.Model): btitle = models.CharField(max_length=20, verbose_name='名称') bpub_date = models.D原创 2020-12-15 13:18:40 · 190 阅读 · 0 评论 -
python Django framework框架(二十一)之RESTful
第一章:接口规范1.什么是Web API接口通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介Web API接口和一般的url链接还是有区别的,Web API接口简单概括有下面四大特点url:长得像返回数据的url链接https://api.map.baidu.com/place/v2/search请求方式:get、post、put、patch、delete采用get方式请求上方接口请求参数:json或xml格式的key-value类型数据ak原创 2020-12-15 13:12:46 · 273 阅读 · 0 评论 -
python Flask web 框架 (十七)
Flask0.Flask简介Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。“微”(micro) 并不表示你需要把整个 Web原创 2020-12-03 16:40:36 · 718 阅读 · 0 评论 -
python Flask web 框架 (十六)
01-01 初识Flask1 什么是flask?Flask 本是作者 Armin Ronacher在2010年4月1日的一个愚人节玩笑 ,不过后来大受欢迎,进而成为一个正式的python编写的web框架Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务,在介绍Flask之前首先来聊下它和Django的联系以及区别,django个大而全的web框架,它内置许多模块,flask是一个小而精的轻量级框架,Django功能大而全,Flask只包含基本的原创 2020-11-30 14:31:02 · 536 阅读 · 1 评论 -
python Django web 框架 (二十)之ORM
Django之模型层第一篇:单表操作一 ORM简介我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增、删、改、查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql、oracle、Microsoft SQL Server等。如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图1但是直接编写原生sql语句会存在两方面的问题,严重影响开发原创 2020-12-03 16:46:42 · 484 阅读 · 0 评论 -
python Django web 框架 (十八)之由来
一 Web应用的组成接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览器,需要强调的一点是:S端由server和application两大部分构成,如图所示:上图:Web应用组成[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-laRI9Slb-1606399294018)(C:\Users\lekaiyu\AppData\Roaming\Typo原创 2020-12-03 16:44:59 · 328 阅读 · 0 评论 -
python Django web 框架 (十九)之MTV
Django之路由层一 路由的作用路由即请求地址与视图函数的映射关系,如果把网站比喻为一本书,那路由就好比是这本书的目录,在Django中路由默认配置在urls.py中,如下图:二 简单的路由配置# urls.py from django.conf.urls import url# 由一条条映射关系组成的urlpatterns这个列表称之为路由表urlpatterns = [ url(regex, view, kwargs=None, name=None), # url本质就是一个原创 2020-12-03 16:45:35 · 436 阅读 · 0 评论 -
python 爬虫基础Selenium (十五)
一、Selenium+Python环境搭建及配置1.1 selenium 介绍selenium 是一个 web 的自动化测试工具,不少学习功能自动化的同学开始首选 selenium ,因为它相比 QTP 有诸多有点:免费,也不用再为破解 QTP 而大伤脑筋小巧,对于不同的语言它只是一个包而已,而 QTP 需要下载安装1个多 G 的程序。这也是最重要的一点,不管你以前更熟悉 C、 java、ruby、python、或都是 C# ,你都可以通过 selenium 完成自动化测试,而 QTP 只支持原创 2020-11-26 10:12:26 · 337 阅读 · 0 评论 -
python 爬虫Beautiful Soup 的简介 (十四)
1. Beautiful Soup 的简介简单来说,Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据。官方解释如下:Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 utf-8 编码。你不需要考虑编码方式,除原创 2020-11-26 10:02:17 · 253 阅读 · 0 评论 -
python 爬虫基础 Scrapy ( 十三)
在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢。import requestsdef fetch_async(url): response = requests.get(url) return responseurl_list = ['http://www.github.com', 'http://www.bing.com']for url in url_list: fetch_async(url)f原创 2020-11-23 17:04:46 · 520 阅读 · 2 评论 -
python 爬虫基础入门 (十二)
世界上80%的爬虫是基于Python开发的,学好爬虫技能,可为后续的大数据分析、挖掘、机器学习等提供重要的数据源。整理这个文档资料希望能对小伙伴有帮助。什么是爬虫?网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓取数据爬虫可以做什么?你可以爬去妹子的图片,爬取自己想看看的视原创 2020-11-18 13:00:51 · 1350 阅读 · 0 评论 -
Python魔术方法Magic Methods ( 十一)
实例化一.实例化一个对象 __new__: 该方法需要返回一个值,如果该值不是cls的实例,则不会调用"__init__"。该方法永远都是静态方法。#!/usr/bin/env python#_*_conding:utf-8_*_class Person: def __new__(cls, *args, **kwar原创 2020-11-17 15:35:20 · 236 阅读 · 0 评论 -
python 线程、进程与协程 (十)
(一)线程与多线程 线程 (1) 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。 (2)一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。有了这些它能够记录自己运行到了什么地方,可以称为线程的上下文。 (3)线程的运行可能被抢占(中断)或暂时的被挂起(也叫睡眠)让其它的线程运行,这叫做让步。 (4)线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备原创 2020-11-17 13:09:15 · 443 阅读 · 0 评论 -
python 网络编程socket (九)
一.socket介绍1>.TCP/IP协议2>.跨网络的主机间通讯 在建立通信连接的每一端,进程间的传输要有两个标志: IP地址和端口号,合称为套接字地址 socket address 客户机套接字地址定义了一个唯一的客户进程 服务器套接字地址定义了一个唯一的服务器进程3>.什么是socket套接字 套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络原创 2020-11-17 12:52:12 · 1121 阅读 · 1 评论 -
python常用模块 (五)
模块,用一砣代码实现了某个功能的代码集合。类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。如:os 是系统相关的模块;file是文件操作相关的模块模块分为三种:自定义模块内置模块开源模块自定义模块1、定义模块情景一:情景二:情景三:2、导入模块Python之所以应用越来越广泛,在一原创 2020-11-16 16:13:54 · 860 阅读 · 0 评论 -
python监测redis集群 kafka集群健康状况
Python 检测系统时间,redis,etcd,mysql,kafka1.Paramiko介绍paramiko包含两个核心组件:SSHClient和SFTPClient。SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传原创 2020-08-21 14:15:48 · 1028 阅读 · 0 评论 -
python3批量增加zabbix主机监控项
(https://www.cnblogs.com/ZFBG/p/9211012.html)前端时间在工作中需要配置zabbix,配置起来特别的麻烦。当时想用ZABBIX API来搞,但是一直没时间,最近有时间来研究研究,并记下笔记,以便复用!在python3爬虫中,我喜欢用request 模块,所以这里也用request来弄!首先贴上zabbix官网和中文官网的地址:https://www.zabbix.com/documentation/3.4/manual/api/reference/item/原创 2020-08-14 13:35:28 · 759 阅读 · 1 评论 -
python面向对象 (八)
语言的分类面向机器抽象成机器指令,机器容易理解代表:汇编语言面向过程问题规模小,可以步骤化,按部就班处理代表:C语言面向对象OOP随着计算机需要解决的问题的规模扩大,情况越来越复杂。需要很多人、很多部门协作,面向过程编程不太合适了代表:C++、Java、Python等面向对象面向对象是一种认识世界、分析世界的方法论。将万事万物抽象为各种对象类class类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合用计算机语言来描述类,是属性和方法的集合对象insta...原创 2020-08-18 16:32:37 · 247 阅读 · 0 评论 -
python算法实例 (七)
插入排序直接插入排序原理在未排序序列中,构建一个子排序序列,直至全部数据排序完成将待排序的数,插入到已经排序的序列中合适的位置增加一个哨兵,放入待比较值,让它和后面已经拍好序的序列比较,找到合适的插入点import randomnum = [i for i in range(10)]random.shuffle(num)# 就地打乱列表中元素顺序print(num)nums = [0] + num# 增加一个哨兵位length = len(nums)for i in range(2原创 2020-08-09 16:37:37 · 535 阅读 · 0 评论