一、 什么是Python?
Python是一种面向对象、直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,常常被称为胶水语言,它能够很轻松地把用其他语言制作的各种模块(尤其是C/C++)联结在一起。
安装Python
因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的。
要开始学习Python编程,首先就得把Python安装到你的电脑里。安装后,你会得到Python解释器(就是负责运行Python程序的),一个命令行交互环境,还有一个简单的集成开发环境。
1. 版本问题
目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。在使用之前,根据自己的需求进行下载,因为两个版本的有些函数调用方法不一样,要不然,在写代码过程中就会有很多令人头疼的问题。当然,一个机子想安装两个版本也不是不可以的,但是一定要在安装第三方插件的时候注意区分,否则,得不到想要的结果。
2.在Windows系统上安装
首先,根据你的Windows版本(64位还是32位)从Python的官方网站 下载Python 对应的64位安装程序或32位安装程序(网速慢的同学请移步国内镜像),然后,运行下载的EXE安装包:
特别要注意勾上Add Python 3.5 to PATH(自动帮我们配置环境变量),然后点“Install Now”即可完成安装。
如果你是安装的是python 2.x,手动配置环境变量也很简单。步骤:我的电脑->属性->高级->环境变量选择PATH,在其后面添加python的安装路径和Scripts文件的路径
3. 运行Python
安装成功后,打开命令提示符窗口,敲入python后,会出现两种情况:
情况一:
看到上面的画面,就说明Python安装成功!
你看到提示符>>>就表示我们已经在Python交互式环境中了,可以输入任何Python代码,回车后会立刻得到执行结果。现在,输入exit()并回车,就可以退出Python交互式环境(直接关掉命令行窗口也可以)。
情况二:
得到一个错误
‘python’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
这是因为Windows会根据一个Path的环境变量设定的路径去查找python.exe,如果没找到,就会报错。这时,你可以进行手动配置。
4.集成开发环境IDE
Python内置IDE (随python安装包提供),不需要再次下载编辑器。在这里向大家推荐一个写python语言的神器—PyCharm,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。严格地符合了Python独特的语法和编写风格:4个空格缩进区分语句关系、使用空行分隔代码。要不然你的代码上就会出现灰色的小波浪线。
打开PyCharm,在菜单栏中点击file—>settings,找到Project Interpreter,选择你的python.exe即可
二、 Python的应用领域
1. web开发(Django、Flask、Tornado) python web 入坑指南
2. 数据科学(Numpy、Pandas、Matplotlib) 数据科学家的完整学习路径(Python版)
3.机器学习(scikit-learn、)scikit-learn: machine learning in Python
4.深度学习(TensorFlow)https://www.tensorflow.org/
5.网络爬虫(Scrapy)Scrapy 1.4 documentation
三、轻量级爬虫架构
(一)什么是爬虫?
爬虫:一段自动抓取互联网的程序。从一个URL页面出发,同时访问到与其相关联的页面,获取我们所需要的有价值的数据,再利用数据,创造出更多的有利地产品。
(二)爬虫架构
目前,在我的认识里,把其分为简单的和复杂的爬虫。
复杂:
a、用户登录了以后才可以访问的
b、有些网页是使用JavaScript,异步加载的内容
简单(本次所要介绍的):
不需要登录的静态网页抓取,通俗点儿,就是人人都可以看到的页面
A、运行流程图
1.调度器向URL管理器询问是否有待爬取的页面?
2.若有,则它获取一个。并用下载器进行下载URL内容
3.利用第三方插件BeautifulSoup对内容解析,解析出价值数据
4.再将数据进行应用
B、步骤分解
1.URL管理器:管理待爬取的URL集合和已经爬取过的URL集合,防止重复、循环抓取
2.网页下载器:将互联网上URL对应的网页下载到本地的工具
关于下载器,Python有自带的urllib2可以基本上应付得了。但是,为了有时需要我把Python 2.X和3.X两个版本都安装上了。
urllib2下载网页的三种方法:
a、最简洁的方法:
b、创建一个请求对象request对象,添加data、http header
c、添加特殊情景的处理器
HTTPCookieProcessor //需要登陆的,借助cookie
ProxyHandler //需要代理才能访问
HTTPSHandler //https加密访问的
HTTPRedirectHandler //url相互跳转的网页
这里介绍简单的需要登录的处理:
3.网页解析器:从网页中提取有价值的数据工具
使用第三方插件BeautiSoup
a、语法
举个栗子:
b、代码
基本按照此方法就可获得自己想要的结果,把获取到的数据加以应用。
运用此方法,进行抓取了学校的各个年级各个班级的课表
(三)抓取课表(详细内容可参考这篇文章)
操作环境:
1.Python 3.4.3
2.wampserver3.0.6_x64_apache2.4.23_mysql5.7.14_php5.6.25-7.0.10
3.PyCharm 2016.1.4
4.Python的第三方插件:pymysql、BeautifulSoup
Python插件安装
安装Python完毕后,需要安装下列插件
- BeautifulSoup
- pymysql
首先,上网下载两个插件的压缩包,解压后放进python的安装目录。然后,以管理员模式打开cmd命令提示符,执行命令
pip install beautifulsoup4
pip install pymysql
WampServer安装
下载地址——安装教程
根据系统的位数选择相应的进行下载
安装启动之后可能会报错:
64位电脑上启动程序出现丢失MSVCR110.dll的解决办法
启动程序报错如下:无法启动此程序,因为计算机中丢失MSVCR110.dll。尝试重新安装该程序以解决此问题。
应该很容易就搜索到,缺少这样的dll文件,是没有安装Visual C++ Redistributable for Visual Studio 2012的缘故,
但是在安装了Visual C++ Redistributable for Visual Studio 2012 X64版本后,运行程序依旧报错这个dll文件丢失,问题就在于,64位电脑中,可以运行32位和64位的程序,因而,如果运行的32位的程序,需要32位的
Visual C++ Redistributable for Visual Studio 2012 X86版本的支持,否则会出现上述的错误,因为软件查找的是X86版本的dll文件,而我安装的X64的,当然会发生丢失
解决方案:如果你是64位的机器,建议安装下列地址上提供的X86和X64版本,两个版本都安装(安装地址)
至此,应该可以正常启动WampServer程序了。
注意
启动程序请选择google浏览器打开,用其他浏览器可能会报错或者受限制。图标颜色由红色变到黄色,再到绿色,说明安装成功。
1.点击phpMyAdmini,打开浏览器,呈现此图
2.创建数据库
- 进入到web页面,点击左上角的新建创建数据库文件。命名数据库名,选择排序规则,如图。
-
在数据库名的子目录下,点击新建,创建数据表并填写所需字段
- 完成所有表的设置,至此,数据库的设置完成了
3.
抓取课表,按照我上面说的步骤来,基本上不会有错。由于具体代码太多了,可以查看我附上的文章,在这里我说一下,需要注意的地方。
现在,我们需要把抓取到的数据导入数据库里,便于存储。
(四)登录查询并抓取学生成绩
A.不要乱碰壁——明白第一点
既然Python爬虫登录查询,肯定是要知道查询成绩要登录的页面(柳苑晨曦):http://online.gxut.edu.cn/cmzx/StudentsMediaCentre.php/Index/login/chengji/1.html
2.利用Chrome进行抓包自动监听当前网络,打开页面,按下F12,如图所示
3.此时有这些文件出现,很明显chengji文件是我们想要的文件,点击打开
4.查找我们刚刚输入的data,一直向下拉就可以看到了
同时,我们可以看到Request Header里面的内容,Cookie、Referer、User-Agent
在这里我一定要说一下Cookie,刚开始我在网上搜索资料的时候,有的利用两次请求页面而获得,然后我查找了一下它的作用:
什么是Cookies?
通俗点讲:Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。
经过我多次打开此页面,观察而得,这个Cookie是不变的。
B、模拟登陆
1. 解析页面,仍然利用BeautifulSoup
2.查看HTML文档,可以知道成绩是存放在<tbody id="biaoge">的<td>标签里,利用创建的soup对象搜索节点
四、Django框架
A、Django简介
1 、什么是Django?
Django是一个基于Python的高级Web开发框架,它能够让开发人员进行高效且快速的开发,高度集成(不用自己造轮子),免费并且开源.采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。2 、架构设计Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。它们各自的职责如下:
从以上表述可以看出Django视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django模板仅仅决定如何展现Django视图指定的数据。或者说,Django将MVC中的视图进一步分解为Django视图和Django模板两个部分,分别决定“展现哪些数据”和“如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。
B、环境搭建
1、软件
Python 3.4.3
Django 1.11.3
开发工具:PyCharm 2016.1.4
2、创建项目和应用
a 、判断Django是否已经安装完成?
首先,找到Django文件目录,用cmd打开;然后,输入python -m django --version,得到版本型号,如图:
b、创建项目
比如:在F:\study中要建一个项目,打开cmd;在命令行输入:django-admin startproject mystudy
c、 创建应用
打开命令行,进入项目中的manage.py的同级目录;
命令行输入:python manage.py startapp study;
添加应用名到settings.py中的INSTALLED_APPS里
- 结合开发工具PyCharm
在PyCharm中:file---open---项目所在地
(四)目录结构
1、项目目录结构
a、manage.py与项目进行交互的命令行工具集的入口,项目管理器
b、wsgi.py 帮助Django提供它创建的文件是Web服务器网关接口
c、urls.pyURL配置文件,Django项目中所有地址(页面)都需要我们去配置其URL
d、settings.py项目的总配置文件,里面包含了数据库、Web应用、时间等各种配置
e、__init__.py
python 中声明模块的文件,内容默认为空
2.应用目录结构
a、migrations数据迁移(移植)模块
b、__init__
同总目录一样声明模块
c、admin.py该应用的后台管理系统配置
d、apps.py该应用的一些配置
e、models.py数据模型模块,使用ORM框架
f、tests.py 自动化测试模块
g、views.py执行响应的代码所在模块,代码逻辑处理的主要地点
五、Py文件作用
(一)创建第一个简单页面(响应)
这会儿我们不需要操作什么,只需编辑blog.views,改改(总目录)myblog/urls.py
- 小知识:
a、每个响应对应一个函数(),对应一个URL,并且函数必须返回一个响应
b、函数必须存在一个参数,一般约定为request
效果:
1.配置URL
编辑urls.py
- 小知识:
a、每个URL都以url的形式写出来
b、url函数放在urlpatterns列表中
c、url函数有三个参数:URL(正则),对应的方法,名称
代码:
from django.conf.urls import url
from django.contrib import admin
import blog.views as bv
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', bv.index)
]
2.第二种URL配置(包含其他url)
修改根目录;在应用目录新建一个urls.py (可以直接复制根的urls.py到应用下,把多余的内容删掉)并且修改内容
- 小知识:
a、在根urls.py中引入include
b、在APP(应用)目录下创建urls.py 文件,格式与根的urls.py相同,删掉多余的
c、在根urls.py中url函数的第二个参数改为include('blog.urls')
代码:
a、根 urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')),
]
b、应用 urls.py
from django.conf.urls import url
from .import views
urlpatterns = [
url(r'^index/', views.index),
]
效果:
注意事项:
根urls.py 针对APP配置的URL名称是该APP所有的url的总路径,配置url时注意正则表达式结尾符号$和/
小结:两种URL配置方法都可以达到相同的效果,但是建议采用第二种,易于维护、管理,同时避免总项目的urlpatterns庞大
(二)Templates介绍
1.什么是templates?
一个一个使用了Django模板语言(Django Template Language,DTL)的HTML文件。当然,也可以使用第三方模板(jinja2)
2.开发第一个Template
步骤:
a、在APP(应用)的根目录下创建名叫template的目录(directory)
b、在该目录下,可以添加我们想要的HTML文件
c、在views.py中返回render()。render函数,将HTML界面响应给浏览器,render()函数传递一般三个参数(请求对象,HTML文件,后台往前端输送的数据)
views.py
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
1.render()函数传递的第三个参数
render()函数中支持一个dict字典(键值对)类型的参数;
该字典是后台传递到模板的参数,键为参数名,在模板中使用{{参数名}}来直接使用
譬如:
- 小知识:
a、当一个项目中添加有多个应用时,Django按照INSTALLED_APPS中的添加顺序查找Templates,不同的应用下Templates的html文件名字相同造成冲突
b、解决办法:在APP的Templates目录下创建以APP名为名称的目录,将html文件放入新创建的目录下
(三)Models介绍
1.Models是什么?
通常,一个Model对应数据库的一张数据表。Django中Models以类的形式表现,它包含了一些基本字段以及数据的一些行为。采用ORM(对象关系映射)实现了对象与数据库之间的映射,隐藏了数据访问的细节,不需要编写任何SQL语句,对类的操作相当于是对数据库的操作。
2.编写Models步骤
a、创建类,继承models.Model,该类即是一张数据表
b、在类中创建字段(类里面的属性)
models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=32)
content = models.TextField(null=True)
3.生成数据表
现在类已经写好了,就要把类与数据库对应起来。注意,每次修改了models.py文件里面的内容,一定操作一下步骤,才会修改有效不会报错
a、命令行中manage.py 同级目录,执行python manage.py makemigrations blog(对应app的名称)
若不写app的名称,则默认该项目下所有应用都生成数据迁移
b、再执行python manage.py migrate
c、数据表(迁移文件)的查看
Django会自动在app/migrations/目录下生成移植文件;执行python manage.py sqlmigrate 应用名 文件的id 查看SQL语句
(四)Admin简介
什么是Admin?
Admin是Django自带的一个功能强大的自动化数据管理界面,被授权的用户可直接在Admin中管理数据库,Django提供了许多针对Admin的定制功能。
1.配置Admin
创建超级用户:pyhton manage.py createsuperuser进行用户名、邮箱地址、密码的设置
登录网址:http://127.0.0.1:8000/admin/ 查看admin管理网站
改变页面成为中文界面:修改settings.py中的LANGUAGE_CODE = 'en-us'为LANGUAGE_CODE = 'zh_Hans'
1.配置应用
在应用下admin.py 文件中引入自身的models模块(或里面的模型类)
编辑admin.py: admin.site.register(Article)
admin.py:
from django.contrib import admin
from blog.models import Article
admin.site.register(Article)
配置应用后的界面:
六、Django小应用——简单博客、笔记记录
详细情况,请点击
七、个人感悟
于我,暑假留校一个月。在此期间,我学到了很多知识,使自己又多了一些技能。但我想说的是,我收获到更多的是对我内心提升的东西。
因为那时正直是暑假,看着身边的同学、宿舍大部分的舍友,纷纷都慢慢的走了,就只有自己一个人在学校了,但,我抑制住了内心骚动的心,抵制住了诱惑......我也熬过了一个人吃饭,一个人回宿舍——他人口中孤独的日子,反而享受那种感觉,我可以有更多的时间去计划我的每一天,我的时间更灵活的在我的手上,也不会因为别人而烦扰;每天按时起床、吃饭、读书、学习,作息时间有规律;放下许多杂事,内心有一份平静,让我用心的去专注自己的东西。这些内心体会,让自己慢慢地变得成熟起来,这些对我来说弥足的珍贵,精神财富。
另外,暑假的夏令营也使我们提前小小的感受了一下,以后工作的方式。
今天恰逢是教师节—2017.9.10,借此机会,向我们的老师表示敬意,感谢对我们的细心栽培,耐心指导,特别是实验室的两位老师,暑假一直陪伴着我们,我们会努力加油,快快成长起来的。最后,教师节快乐!