![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
Python相关
Mr.&
这个作者很懒,什么都没留下…
展开
-
Linux运行Django
Python -m venv 名称 --》创建虚拟环境pip show 包名 查看pip的包路径查看Django安装目录: pip show django添加软连接:ln -s /usr/local/python3/lib/python3.7/site-packages/django/bin/django-admin.py /usr/local/bin运行 django-admin.py 。。。。注意:1、在主应用的init下写import pymysqlpymysql.ins原创 2020-06-28 18:09:30 · 1094 阅读 · 0 评论 -
Linux安装python
Linux的软连接在**/usr/bin**路径下Linux配置软连接方法:ln -s 【目标地址】 【软连接地址+文件(/usr/bin/文件)】类似于windows创建快捷方式,会自动创建软连接文件pip show 包名 查看pip的包路径常见错误,建议安装python前先安装这些环境错误:ModuleNotFoundError: No module named ‘_ctypes’解决办法:yum install libffi-devel错误:zipimport.ZipImportEr原创 2020-06-28 18:06:53 · 488 阅读 · 0 评论 -
基础
数据结构数据结构是计算机存储、组织数据的方式按照不同的角度,数据可分为逻辑结构和物理结构 其中逻辑结构是面向问题的, 而物理结构是面向计算机的, 它们的基本目标都是将数据及其逻辑关系存储到计算机内存中。物理结构顺序存储结构:把数据元素放在地址连续的存储单元中,数据间的逻辑关系和物理关系一致。如,数组。链式存储结构:数据元素的存储关系不能反映其逻辑关系。如,链表。逻辑结构集合结构:数据之间无联系线性结构:数据之间有联系树形结构:数据之间是树形联系图形结构:数据原创 2020-06-28 17:55:28 · 103 阅读 · 0 评论 -
反射
反射核心本质其实就是利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动!demo:random.randrange(10)module,cls = input('').split('/') # 输入为 random/randrange 参数均为字符串obj = _import_(module) # `_import_`为动态导入模块,根据输入的名称导入该模块func = getattr(obj,cls) # getattr原创 2020-06-28 17:55:10 · 100 阅读 · 0 评论 -
定时任务
定时任务一、time模块(阻塞)# 此方法有一个弊端,若在sleep期间过去了第30s,则不会提示from datetime import datetimeimport timedef timer(): while True: a = datetime.now().strftime("%S") if a == '30': # 每分钟的第30s执行 print('铃铃铃') print(datetime.原创 2020-06-28 17:54:52 · 3069 阅读 · 0 评论 -
datetime模块
时间与时间段相加:timedeltaa = datetime.timedelta(minutes=45) # 时间段为45分钟b = datetime.datetime.now() + a # timedelta(时间段),可以将目标时间加上时间段,算出时间结果print(b.strftime('%H:%M:%S')) # 结果时间时间与字符串相减,求得相隔时间段a = datetime.datetime.strptime('16:12:00','%H:%M:%S') # 将字符原创 2020-06-28 17:54:34 · 105 阅读 · 0 评论 -
Python与mongo交互
Python与mongo交互# 导入模块import pymongo# 连接MongoDB数据库conn = pymongo.MongoClient('localhost', 27017)# 建库db = conn.goods# 建集合table = db.snacks# 数据操作: 插入数据table.insert(dict)table.insert_one(dict)table.insert_many([dict1, dict2, dict3])# 数据操作: 查询数原创 2020-06-28 17:52:52 · 165 阅读 · 0 评论 -
python 与 mysql 交互
python 与 mysql 交互# 1.导包 import puymysql# 2.创建连接 conn = pymysql.connect(host='localhost',port=3306,database='数据库名',user='root',password='密码',charset='utf8')# 3.创建光标 cs1 = conn.cursor()# 4.执行mysql语句(先创建语句) mysql = '要执行的mysql语句,如: select * from 数据原创 2020-06-28 17:51:41 · 138 阅读 · 0 评论 -
Python与Redis的使用
Redis基础使用redis读写import redis# decode_responses 若不加,取出的值可能为bytes,而不是python的数据类型conn = redis.Redis(host='39.97.XXX',port=6379,decode_responses=True) conn.set('chinese','test') # 存value = conn.get('chinese') # 取print(value)redis连接池import redi原创 2020-06-28 17:49:25 · 194 阅读 · 0 评论 -
Django基础
Django命令版本号python -m django --version创建项目django-admin startproject mysite(项目名称)创建子项目(要进到项目中)python manage.py startapp user(子应用名称)启动项目python manage.py runserver 127.0.0.1:8005(ip:端口)可不写创建超级用户python manage.py createsuperusersetti原创 2020-06-28 17:46:51 · 275 阅读 · 0 评论 -
Django模板
Django添加前端配置文件方法Django中,用相对路径有时候会出错,所以最好用这种方法:{%load staticfiles%}<!DOCTYPEhtml>{%load staticfiles%}<html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src={%sta原创 2020-06-28 17:44:50 · 106 阅读 · 0 评论 -
Flask
Web框架什么是web: 协助开发者快速开发web应用程序的一套功能代码 开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码Web开发的优点: 避免重复 稳定性和可扩展性强 可以降低开发难度,提高开发效率常见的Web框架: Flask : 小型 Django : 功能全面 Tornado :专门写接口 MVC:三个层面,Flask简介:Werkzeug工具箱编写的轻量型Web开发框架,本身相当于一个内核,几乎所有功能都需第三方扩展,没有默认数据原创 2020-06-28 17:42:42 · 231 阅读 · 0 评论 -
Celery
Celery 是一款基于 python 的异步任务处理框架,用以实现分布式任务队列Celery组件worker (任务执行者),用来执行具体任务,可在多台服务器部署实现扩展,项目中我们使用 python 进行开发broker (中间人),用来实现任务调度、worker 管理等功能;支持 RabbitMQ、Redis、Zookeeper 等中间件,项目中我们使用 redis,RabbitMQ较难配置,但是队列效果比Redis好。backend 用来存储任务结果,项目中我们使用 redisapplic原创 2020-06-28 17:41:39 · 218 阅读 · 1 评论 -
上下文管理
拥有__enter__和__exit__ 属性的才可以被上下文管理a = open('a.txt','w')dir(a) # 此时a有__enter__ 和 __exit__ 属性,所以才可进行打开与关闭,即可进行下文管理with open('a.txt','w') as f: pass # 正确with open(1,'w') as f: # 错误,1不存在__enter__ 和 __exit__ pass...原创 2020-06-28 17:55:38 · 161 阅读 · 0 评论 -
类和方法
Class类类在创建时会被执行# 此时 test 会被输出class Demo(object): print('test') # 就算不调用类依然会输出 def __init__(self): pass魔法方法_new_ 一般在实例化类时使用# __new__ 方法必须返回类的引用class Demo(object): def __new__(cls): .... return object.__new__(c原创 2020-06-28 17:32:55 · 154 阅读 · 0 评论 -
位运算符
虚拟环境第一种python3 -m venv myenv 此代码可生成虚拟环境,并拥有独立的pip包source myenv/bin/activate 激活虚拟环境deactivate 退出虚拟环境第二种安装:pip install virtualenvwrapper-win常用命令:mkvirtualenv envname(名称) # 创建虚拟环境并自动切换到该环境下workon envname(名称) # 切换到某虚拟环境下pip list原创 2020-06-28 17:27:29 · 153 阅读 · 0 评论 -
字符串操作
切片取值name = "abcdefghijklmn"index = name[2:] #输出第3个之后所有的,包括第3个index_1 = name[:2] #输出到第3个,不包括第3个index_2 = name[2:8] #输出从第3个(包括)开始到第9个(不包括)index_3 = name[2:-1] #输出从第3个(包括)开始到倒数第1个(不包括)index_4 = name[2:8:2] #输出从第3个(包括)开始到第9个(不包括),然后开始输出第二原创 2020-06-28 17:06:23 · 269 阅读 · 1 评论 -
python生成二维码
python生成二维码pip install qrcode简单调用import qrcode# 调用qrcode的make()方法传入url或者想要展示的内容img = qrcode.make('https://www.baidu.com')# 第一种写入with open('baidu.png', 'wb') as f: img.save(f)data = {'code': 'token111111111111111111', 'user': 'id123123', 'ispay原创 2020-06-28 17:02:53 · 284 阅读 · 0 评论 -
字符串转字典
三种方式1、json# 问题:转字典的字符串中{}里必须是",不能是'。否则会报错import jsona = {'name': 'xl', 'age': 12, 'car': {'type': '汽车', 'price': 10}, 'person': {'job': 'programmer', 'age': 3}}a = json.dumps(a) # 字典转jsona = json.loads(a) # json转字典({}中必须是")2、eval# 问题:虽然不存在单双引号原创 2020-06-28 17:01:28 · 235 阅读 · 1 评论 -
日志配置
日志的配置文件import osPROJECT_NAME = "monitor_demo" # 项目名称,以此作为日志文件夹名TOOLS_PROJECT_NAME = "monitor_tools" # 项目中的常用脚本,需要日志记录# NOTE: default level is DEBUGLOG_LEVEL = os.getenv('LOG_LEVEL', "DEBUG") # 日志级别,低于此级别不会别记录# NOTE: default handler is 'console,原创 2020-06-28 16:59:54 · 154 阅读 · 0 评论 -
BeautifulSoup
BeautifulSoupBeautifulSoup也是一个解析库BS解析数据是依赖解析器的, BS支持的解析器有html.parser, xml,xml, html5lib等 (lxml速度快,容错能力强)选择器分类1.节点选择器2.方法选择器3.CSS选择器:1.根据节点名及节点层次关系定位标签:标签选择器 & 层级选择器 soup.select('title') # 标签选择器 soup.select('div>ul>li') #单层级选择器原创 2020-06-28 16:54:39 · 1182 阅读 · 0 评论 -
构建UA池/代理IP
构建UA池# 实现存入ua池10个uafrom fake_useragent import UserAgentua_pool = []user_agent = UserAgent()for i in range(10): ua = useragent.Ie # ie浏览器 ua = useragent.Firefox # 火狐浏览器 ua = user_agent.Chrome # 谷歌浏览器 ua_pool.app原创 2020-06-28 16:53:52 · 324 阅读 · 0 评论 -
scrapy
基础1.scrapy安装与环境依赖# 1.在安装scrapy前需要安装好相应的依赖库, 再安装scrapy, 具体安装步骤如下: (1).安装lxml库: pip install lxml (2).安装wheel: pip install wheel (3).安装twisted: pip install twisted文件路径 (twisted需下载后本地安装,下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted原创 2020-06-28 16:51:53 · 336 阅读 · 0 评论 -
Scrapy&Django
Scrapy & Django项目# 需求: 编写爬虫项目与Django项目详解和, 将爬取到的数据展示到前端页面上# 爬虫的编写:# spider编写:import scrapyfrom dl.items import DlItemclass PSpider(scrapy.Spider): name = 'p' # allowed_domains = ['www.baidu.com'] start_urls = ['https://www.kuaidaili原创 2020-06-28 16:49:04 · 319 阅读 · 0 评论 -
selenium
selenium介绍:selenium是一个web自动化测试用的框架. 程序员可以通过代码实现对浏览器的控制, 比如打开网页, 点 击网页中的元素, 实现鼠标滚动等操作目的:在爬取数据的过程中, 经常遇到动态数据加载, 一般动态数据加载有两种, 一种通过ajax请求加载数据, 另 一种通过js代码加载动态数据。 selenium可以模拟人操作真实浏览器, 获取加载完成的页面数据使用from selenium import webdriver browser = webdriver.Chrome('原创 2020-06-28 16:46:48 · 129 阅读 · 0 评论 -
xpath解析
xpath解析库数据解析的过程中使用过正则表达式, 但正则表达式想要进准匹配难度较高, 一旦正则表达式书写错误, 匹配的数据也会出错。网页由三部分组成: HTML, Css, JavaScript, HTML页面标签存在层级关系, 即DOM树, 在获取目 标数据时可以根据网页层次关系定位标签, 再获取标签的文本或属性原理1. 根据网页DOM树定位节点标签 2. 获取节点标签的正文文本或属性值安装 pip install lxml==4.3.3 目前用的4.3.3版本使用步原创 2020-06-28 16:45:42 · 321 阅读 · 0 评论 -
爬虫基础
爬虫概念爬虫又称网页蜘蛛或网络机器人 是模拟人操作客户端(浏览器、app)向服务器发起请求,抓取数据的自动化程序或脚本。 模拟:用爬虫程序伪装出人的行为, 避免被服务识别为爬虫程序 。 客户端:浏览器、app都可实现人与服务器之间的交互 自动化:爬取的数据往往量很大(百万、千万条),所以需要自动化获取爬虫语言PHP 并发能力差,多多进程多线程支持不好,数据量较大爬虫效率低C/C++ 效率高,但是学习成本高,对程序员要求高,市场需求少,目前还在研究层面Java 代码臃肿,原创 2020-06-28 16:44:27 · 807 阅读 · 0 评论 -
增量式与分布式
基于crawlSpider的全站数据爬取# 项目的创建scrapy startproject projectnamescrapy genspider -t crawl spidername www.baidu.com# crawlspider全站数据爬取:- CrawlSpider是一个爬虫类, 是scrapy.spider的子类, 功能比spider更强大.- CrawlSpider的机制: - 连接提取器: 可以根据指定的规则进行连接的提取 - 规则解析器: 更具指定的规则原创 2020-06-28 16:42:22 · 133 阅读 · 0 评论 -
基于Tornado的websocket
基于Tornado的websocket后端# 引入需要的模块from tornado.web import RequestHandler, Applicationfrom tornado.httpserver import HTTPServerfrom tornado.websocket import WebSocketHandlerfrom tornado.ioloop import IOLoopimport jsonclass BaseHandler(RequestHandler):原创 2020-06-28 16:40:50 · 339 阅读 · 0 评论 -
Tornado_Request属性
属性说明self.request.methodhttp的请求头;get, post等self.reuqest.uri客户端请求完整的uriself.request.pathuri的路径名,不包含查询的字符串self.request.queryuri中的查询字符串self.request.versionhttp/1.1self.request.headers请求头self.requset.body字符串的消息self.request....原创 2020-06-28 16:39:25 · 230 阅读 · 0 评论 -
Tornado入门
Tornado# Tornado self.write() 适用于直接返回网页,也可用于前后端交互# self.get_argument() 适用于get、post方法# self.get_arguments() 获取多选数据,获取的值为列表形式# self.request.body 获取body中的数据(常为json),数据为二进制,使用utf8解码(XX.decode('utf8'))简易的网页结构import jsonimport tornado.ioloop原创 2020-06-28 16:38:24 · 177 阅读 · 0 评论