def

python爬虫之urllib库(一)

心不动则不痛 提交于 2020-11-26 08:07:33
python爬虫之urllib库(一)   urllib库    urllib库是python提供的一种用于操作URL的模块,python2中是urllib和urllib2两个库文件,python3中整合在了urllib一个库中。即在Python中导入和调用方法也发生了改变。 python2和python3中urllib库变化对比 python2 python3 import urllib2 import urllib.request,urllib.request import urllib import urllib.reqest,urllib.error,urllib.parse import parse import urllib.parse urllib2.urlopen urllib.request.urlopen urllib.urlencode urllib.parse.urlencode urllib.quote urllib.request.quote cookielib.CookieJar http.CookieJar urllib2.Request urllib.request.Request   使用urllib库快速爬取网页   使用urllib库需要导入urllib库中对应的模块。   import urllib.request   导入对应模块以后

python爬虫基础15-python图像处理,PIL库

风格不统一 提交于 2020-11-26 07:27:38
Python图像处理-Pillow 简介 Python传统的图像处理库 PIL (Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单。 但是由于 PIL 不支持Python3,而且更新缓慢。所以有志愿者在 PIL 的基础上创建了一个分支版本,命名为 Pillow , Pillow 目前最新支持到python3.6,更新活跃,并且增添了许多新的特性。所以我们安装Pillow即可。 安装 Pillow 的安装比较的简单,直接pip安装即可: pip install Pillow 但是要注意的一点是, Pillow 和 PIL 不能共存在同一个环境中,所以如果安装的有 PIL 的话,那么安装 Pillow 之前应该删除 PIL 。 由于是继承自 PIL 的分支,所以 Pillow 的导入是这样的: import PIL # 或者 from PIL import Image 使用手册 Image Image 是Pillow中最为重要的类,实现了Pillow中大部分的功能。要创建这个类的实例主要有三个方式: 从文件加载图像 处理其他图像获得 创建一个新的图像 读取图像 一般来说,我们都是都过从文件加载图像来实例化这个类,如下所示: from PIL import Image picture = Image. open(

LeetCode 207. 课程表 | Python

余生颓废 提交于 2020-11-26 07:09:54
207. 课程表 题目来源:力扣(LeetCode) https://leetcode-cn.com/problems/course-schedule 题目 你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判断是否可能完成所有课程的学习? 示例 1: 输入: 2, [[1,0]] 输出: true 解释: 总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能的。 示例 2: 输入: 2, [[1,0],[0,1]] 输出: false 解释: 总共有 2 门课程。学习课程 1 之前,你需要先完成​课程 0;并且学习课程 0 之前,你还应先完成课程 1。这是不可能的。 提示: 输入的先决条件是由 边缘列表 表示的图形,而不是 邻接矩阵 。详情请参见 图的表示法 。 你可以假定输入的先决条件中没有重复的边。 1 <= numCourses <= 10^5 解题思路 思路:拓扑排序(BFS,DFS) 其实,这是一道经典的【拓扑排序】问题。 首先先审题,结合示例 1 和示例 2,我们其实可以看到,其实题目问的是给定输入先决条件表示的图形(也就是课程表)是否是有向无环图

python用Django+Celery+Redis 监视程序(一)

淺唱寂寞╮ 提交于 2020-11-26 03:50:44
C盘创建一个目录就叫DjangoDemo,然后开始在该目录下操作。 1.新建Django工程与应用 运行pip install django 安装django 这里我们建一个名为 demo 的项目和 home 应用。 django-admin startproject demo 创建 demo 项目 然后进入demo文件夹运行命令,manage.py startapp home 创建home应用。 2.编辑 settings.py 文件 在demo文件夹下的settings.py文件的最后添加如下代码: ###配置Broker BROKER_URL = 'redis://127.0.0.1:6379/0' BROKER_TRANSPORT = 'redis' 3.新建 celery.py 文件 在demo文件夹下创建 celery.py 文件,文件内容如下: from __future__ import absolute_import import os import django from celery import Celery from django.conf import settings # os.environ.setdefault(“DJANGO_SETTINGS_MODULE”, “djtest.settings”) # # 设置默认的配置文件的环境变量DJANGO

flask 轮询/长轮询/长连接 websocket

白昼怎懂夜的黑 提交于 2020-11-25 07:58:43
flask 轮询 长轮询 长连接 轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。   优点:后端程序编写比较容易。   缺点:请求中有大半是无用,浪费带宽和服务器资源。(而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量)   实例:适于小型应用。 长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接(或到了设定的超时时间关闭连接),客户端处理完响应信息后再向服务器发送新的请求。   优点:在无消息的情况下不会频繁的请求,节省了网络流量,解决了服务端一直疲于接受请求的窘境   缺点:服务器hold连接会消耗资源,需要同时维护多个线程,服务器所能承载的TCP连接数是有上限的,这种轮询很容易把连接数顶满。   实例:WebQQ、Hi网页版、Facebook IM。 长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。      连接保持 - Http 发起请求 在请求中写一个协议 - WebSocket - 服务器收到Websocket请求 ,自动保持此连接 - 永久不断开,除非主动断开 - 可以通过此连接主动找到客户端   优点:消息即时到达,不发无用请求。  

pyecharts绘制地图可视化

家住魔仙堡 提交于 2020-11-25 07:51:01
pyecharts: 官方文档 我们这里使用pyecharts模块进行绘图。 pyecharts 项目包含了一系列的地理地图数据,这些数据或者已经内置,或者需要额外安装和加载,我们需要下载下面六个包。 选择自己需要的安装 pip install echarts -countries- pypkg pip install echarts -china-provinces- pypkg pip install echarts -china-cities- pypkg pip install echarts -china-counties- pypkg pip install echarts -china-misc- pypkg pip install echarts -united-kingdom-pypkg pyecharts中Geo表达和城市关联的数据,Map表达和国家和省份关联的数据。 世界地图 from pyecharts import Map, Geo # 世界地图数据 value = [95.1, 23.2, 43.3, 66.4, 88.5 ] attr = [ " China " , " Canada " , " Brazil " , " Russia " , " United States " ] map0 = Map( " 世界地图示例 " , width=1200

记一次 gunicorn 启动 flask 出问题的经历

北城以北 提交于 2020-11-25 07:08:37
出错现象: gunicorn+nginx+flask 部署项目, 部署过程没问题,项目也正常启动了,但是一旦访问接口,就会报错: Traceback (most recent call last): File " /usr/local/lib/python3.6/dist-packages/gunicorn/workers/sync.py " , line 135, in handle self.handle_request(listener, req, client, addr) File " /usr/local/lib/python3.6/dist-packages/gunicorn/workers/sync.py " , line 176, in handle_request respiter = self.wsgi(environ, resp.start_response) TypeError: __call__ () takes from 1 to 2 positional arguments but 3 were given 但是我通过 runserver运行的话,是没有问题的,外网可以正常访问. 所以问题就出在gunicorn 和 flask 的 wsgi 对接上. gunicorn 启动时的方式是 gunicorn [options] file:app

PyQt5之使用Qt下的designer工具将.ui文件转换成.py文件后添加什么东西后方可运行

流过昼夜 提交于 2020-11-25 06:31:16
首先证明我是加了那些鬼东西以后可以成功运行的。 然后来叙述一下我的过程。 这是一个.ui文件生成的.py文件。(把主要的内容省去了,但是没有影响结构) 1 # -*- coding: utf-8 -*- 2 3 # Form implementation generated from reading ui file 'wallet_content.ui' 4 # 5 # Created by: PyQt5 UI code generator 5.10.1 6 # 7 # WARNING! All changes made in this file will be lost! 8 9 from PyQt5 import QtCore, QtGui, QtWidgets 10 11 class Ui_wallet_content(object): 12 def setupUi(self, wallet_content): 13 wallet_content.setObjectName( " wallet_content " ) 14 #以下省略 137 138 def retranslateUi(self, wallet_content): 139 #以下省略 可见object name为wallet_content(13行) wallet_content.setObjectName(

python 参数解构

£可爱£侵袭症+ 提交于 2020-11-25 05:54:06
# 参数解构:传参时,可以在集合类型前使用*或**把集合类型结构解开 # 非字典类型,使用* # 字典类型,使用** # 注:提取出来的元素的个数要与形参个数相同 def add(x , y): print(x + y) add( 4 , 5) t = ( 4 , 8) print(*t) add(*t) lst = [ 1 , 2] add(*lst) add(* range( 1 , 3)) dict = { 'x': 1 , 'y': 2} add(**dict) add(*dict.keys()) add(*dict.values()) def add(*iterable): result = 0 for x in iterable: result += x print(result) add( 1 , 2 , 3) add(*[ 1 , 2 , 3]) add(* range( 10)) 来源: oschina 链接: https://my.oschina.net/u/4350550/blog/3846896

[LeetCode] 301. Remove Invalid Parentheses 移除非法括号

巧了我就是萌 提交于 2020-11-25 04:27:32
Remove the minimum number of invalid parentheses in order to make the input string valid. Return all possible results. Note: The input string may contain letters other than the parentheses ( and ) . Example 1: Input: "()())()" Output: ["()()()", "(())()"] Example 2: Input: "(a)())()" Output: ["(a)()()", "(a())()"] Example 3: Input: ")(" Output: [""] 给一个字符串,里面含有'(', ')'和字母,其中的小括号可能不配对,移除不配对的括号,使得括号匹配,返回所有可能的解。 判断括号是否合法,可以用栈,这也是栈的一个典型应用。也可用一个count计数器,遇到左括号++,右括号--,一旦count小于0,就说明不合法。比较推荐count方式,空间复杂度较低。 解法1: BFS: 枚举去除的点,当找到后停止BFS树的扩展(因为要去除最少括号,所以即使有其他的结果,也一定在同一层) 解法2: DFS: 统计左右括号能删的个数,进行DFS。