Python编程
未读上篇文章讲述 Django 环境搭建, 在文章最后部分还有 6 篇 Django 简单入门的文章。
后来我自己以一个新手的角度来阅读文章,发现前面三篇文章能被够消化吸收。
但是后三篇文章理解起来可能会有点费劲,可能是我漏写了很多细节。
因此,本文先将前三盘文章的内容做一些补充说明,降低学习成本。
1.MVC 与 MTV在 Web 服务器开发领域,MVC 模式可以算是家喻户晓。
有些书籍或者文章说 Django 是一个 MVC 开发框架,另一些文章或者博客则说 Django 是 MTV 模式。
那么 MTV 模式是什么?
Django 又究竟是哪种模式?
Django 是一个遵循 MVC 开发模式的框架 。
我们先看下 MVC 的数据流向,了解 MVC 的工作流程。
M 是 Model 的意思 ,它是一个抽象层,用来构建和操作 Web 应用中的数据。同时,Model 层跟数据库打交道的层次,执行数据库数据的增删改查操作。
在 Django 项目中,Model 层逻辑是体现在 models.py 中,models.py中定义的各种类代表数据模型 model 。每个 model 是对应数 ...
Python编程
未读古人云:功遇善其事,必先利其器。在正式学习 Django Web 框架之前,我们要把准备工作做好。
准备工作主要是搭建开发环境,具体工作是安装 Python、创建虚拟环境 venv、安装 Django、安装 IDE 工具(Pycharm)。
1.安装 Python如果你使用的桌面系统是 Windows,你需要到 Python 官网下载安装包。
Linux 和 Mac 系统都自带了 Python 运行环境。Python 分为 2 和 3 版本,目前 Python 团队即将停止维护 Python 2 版本,所以建议安装 Python 3。
目前最新版本是 3.6.4。另外,本系列文章适合具备 Python 基础的同学。
如果你对 Python 基本语法还是很懵懂,建议你先把基础知识夯实。
2.创建虚拟环境 venv一提到 Python 虚拟环境,你会惊叹说为什么不用 virtualenv?
如果你生产或开发环境需同时支持 Python 2 和 Python 3 ,那就需要 virtualenv。
我们是从零开始学习 Django,所以可以直接使用 venv。简单来说,venv 模块是 P ...
Python编程
未读前段时间,有个读者留言跟我说,有空出使用 Python 实现 RESTful API 的教程。我一看,这正合我意。
自己很早就想学习 Python web。
之前有简单过了解些 Django 框架基础知识。但对于 Python Web,我还是研究不够深入。
因此,打算接下来一段时间。自己学习 Python Web,并将学习心得分享出来。
自己在 Web 方面是只菜鸟,所以请老鸟轻喷。
回到刚才话题,RESTful API 是个什么东西呢?
不妨我们先看下平常的网页是怎么回事。
我们平时浏览的网站,一般分为前端和后端。我们用浏览器观看页面的内容就是前端的工作。
前端采用 Html + CSS + JavaScript 技术来呈现页面内容以及页面效果。
后端主要负责维护数据库并返回前端请求数据库的数据。
如果我们有个需求,不需要那么华丽、炫酷的页面,只需要后端返回的数据。我们把这样的网络请求称为 RESTful API。再者,REST 描述的是在网络中 Client(PC 浏览器、手机 APP 等) 和 Server的一种交互形式;REST本身不实用,实用的是 RESTful API(R ...
Python编程
未读本文,猴哥分享几个 Python 编程的小技巧。
1.编码问题我们在爬取网站时,会经常抓取网页文本,但是打印文本会出现是一堆乱码。
这是为什么呢?原因是 Python 中字符对象分为两种,一种是 Unicode 对象,另一种是 str 对象。
字符在 Python 中又以 Unicode 对象为基础,所以我们定义的字符串在内存中以 Unicode 编码的形式存储。
另外,str 对象又可以有多种编码形式,如 UTF-8、GBK-2312 等。虽然不同编码的 str 对象能被解码成 unicode 对象,但是不同编码的 str 对象直接不能直接转换。
因此,如果字符串编码是 GB2312,将其存储到 list 中,再打印出来看到乱码是 Unicode 编码。
解决这个问题其实很简单,Unicode 作为中间编码。我们只要将一种字符编码(如 GB2312)的字符串解码为 Unicode 编码,再编码为另外一种字符编码(如 UTF-8)。
1234# 数据库以 UTF-8 形式保存字符串,而获取到的字符串是 GB2312str = getFromNetWork() # 获取网络字 ...
Python编程
未读我们编码过程中经常需要获取当前时间。当然, 这也离不开对时间类型进行转换运算。
本文主要讲解 Python 各种时间类型之间的转换。
1.处理时间的库Python 标准库中有两个处理时间的库。其中一个名为 datetime,另一个是time。
在 Python 官网文档中,datetime 是被定义为数据类型(Data Types)。
由此可见,datetime 是主要提供处理日期和时间的数据类型的模块。
它其中有几个常用的类型,例如:datetime.datetime、datetime.time、datetime.date 等,其中最主要的类是datetime.datetime。
因为它携带了 datetime.time 和 datetime.date 这两个所带的信息,能够比较齐全地输出,即能一次性就输出年、月、日、时、分、秒等日期和时间信息。
time 模块是归属于通用操作系统服务(Generic Operating System Services)类目中。time 模块主要提供各种时间转换的函数。
它服务于系统层次,Python 又是跨平台的,所以有些 API 只能在某些操 ...
Python编程
未读运维工程师经常使用 Python 编写脚本程序来做监控系统运行的状态。
如果自己手动使用 Python 的标准库执行系统命令来获取信息,会显得非常麻烦。既要兼容不同操作系统,又要自己处理解析信息。
为了解决的痛点问题,psutil 就横空出世。
它的出现无疑是运维工程师的福音。
运维小伙伴通过它执行一两行代码即可实现系统监控。
1.简介psutil全称是process and system utilities。
psutil 是一个跨平台的应用于系统监控、分析、以及对系统进程进行一定管理的 Python 第三方库。
它不仅能够轻松获取系统中正常运行的进程和系统利用率(例如 CPU、内存、磁盘、网络等)信息,还实现了跟 UNIX 系统命令行工具类似的功能。
可以说是运维工作的“必备品”。
它功能强大,操作简单。这也促使很多开源项目都集成它到自己项目中,不妨有谷歌的 GRR 项目、脸书的 osquery 项目等。
github 地址
2.安装安装 psutil 是有多种办法:通过 pip 安装,通过源码方式安装,通过下载 tar 压缩包来安装。其中通过 pip 的方式是最简单的。
1 ...
望着桌上的日历,我发现只剩下几张纸。
自己蓦然意识到 2017 年已经即将离去,2018 年即将到来。
已经到了年底,我们需要总结和回顾今年的历程。
让我们盘点 2017 年涉及 Python 重要事件。
1.2017 年最热门的话题莫过于人工智能。人工智能是一块崭新的研究领域,所以很多公司都很注重人工智能的研究。
走在前沿的,当属谷歌。
谷歌不仅完善用于开源人工智能项目 TensorFlow 文档,建立相关社区,而且还在中国成立 AI 中国中心。
虽然 TensorFlow 虽然是用 C++ 编写的,但是提供了一套 Python 的接口。
另外,吴恩达教授又开设人工智能课程。这种种让 Python 的人气一路高涨, 成为今年世界上最流行的编程语言。
TensorFlow
2.Python 社区在几年前就一直在讨论是否迁移到 GitHub 以改进开发流程。
就在今年 2 月份,Brett Cannon 在 Python 官方邮件组发消息,确定迁移到 GitHub 的日期。
这让 Python 正式迁移到源码托管平台 GitHub,拥抱了 Git 版本控制系统。
cpython
...
Python爬虫实战
未读现在很多网站都是对单个 IP 地址有访问次数限制,如果你在短时间内访问过于频繁。该网站会封掉你 IP,让你在一段时间内无法正常该网站。
突破反爬虫机制的一个重要举措就是代理 IP。
拥有庞大稳定的 IP 代理,在爬虫工作中将起到重要的作用,但是从成本的角度来说,一般稳定的 IP 池都很贵。
因此,我为 Scrapy 爬虫编写个免费 IP 代理池插件。
1.特点该插件适用的程序是基于 Scrapy 框架编写的爬虫程序。插件通过爬取免费代理地址,然后过滤掉无效 IP 代理后存放到 Mysql 数据库。另外,它会每 10 分钟轮询数据库中的 IP 代理数量。如果代理地址因为连接失败次数超过 3 次被删除,从而导致代理不够,它会后台重新爬取新的 IP 代理。
2.收集的代理网站
无忧代理(data5u)
ip181 代理
快代理
西刺代理
3.项目说明
startrun.py项目的主入口。它负责启动 Scrapy 爬虫和代理池。
your_scrapy_project该目录下主要存放两个文件:config.py 和 settings.py。config.py 是代理池的项目配置信息。而 ...
Python爬虫入门
未读目前,很多网站为了防止爬虫肆意模拟浏览器登录,采用增加验证码的方式来拦截爬虫。
验证码的形式有多种,最常见的就是图片验证码。其他验证码的形式有音频验证码,滑动验证码等。图片验证码越来越高级,识别难度也大幅提高,就算人为输入也经常会输错。
本文主要讲解识别弱图片验证码。
1.图片验证码强度图片验证码主要采用加干扰线、字符粘连、字符扭曲方式来增强识别难度。
加干扰线加干扰线也分为两种,一种是线条跟字符同等颜色,另一种则线条的颜色是五颜六色。
字符粘连各个字符之间的间隔比较小,互相依靠,难以分割。
字符扭曲字符显示的位置相对标准旋转一定角度。
其中最弱的验证码为不具备以上的特征,干扰因素比较小。如下:
2.识别思路首先对图片做二值化来降噪处理,去掉图片中的噪点,干扰线等。然后将图片中的单个字符切分出来。最后识别每个字符。
图片的处理,我采用 Python 标准图像处理库 PIL。图片分割,我暂时采用谷歌开源库 Tesseract-OCR。字符识别则使用 pytesseract 库。
3.安装
Pillow
我使用的 Python 版本是 3.6, 而标准库 PIL 不支持 3. ...
Python编程
未读上篇文章,我们了解到有三种办法能实现定时任务,但是都无法做到循环执行定时任务。
因此,需要一个能够担当此重任的库。它就是APScheduler。
1.简介APScheduler的全称是Advanced Python Scheduler。
它是一个轻量级的 Python 定时任务调度框架。
APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。
2.安装使用 pip 包管理工具安装 APScheduler 是最方便快捷的。
123pip install APScheduler# 如果出现因下载失败导致安装不上的情况,建议使用代理pip --proxy http://代理ip:端口 install APScheduler
3.使用步骤APScheduler 使用起来还算是比较简单。运行一个调度任务只需要以下三部曲。
新建一个 schedulers (调度器) 。
添加一个调度任务(job stores)。
运行调度任务。
下面是执行每 2 秒报时的简单示例代码:
12345678 ...