python爬虫+django 搭建学分积查询网站

本文介绍了使用Python 2.7和Django 1.8搭建一个学分查询网站的过程。首先,文章讲解了Python爬虫的基本原理和如何模拟登录教学管理系统,抓取并解析成绩信息。接着,讲述了如何运用Django框架创建Web应用,包括登录界面、成绩展示,并利用Bootstrap实现响应式布局。文章强调了正则表达式在数据提取中的关键作用,以及在项目实施中遇到的字符串编码、JS代码调试和项目迁移等问题。
摘要由CSDN通过智能技术生成

环境:Python 2.7 + Django 1.8

名词介绍

Python是一种面向对象,解释型计算机程序设计语言,具有丰富和强大的库。

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。在这里就是通过爬虫把成绩网页抓取下来,然后再用正则表达式提取出来需要的信息。

Django是一个常用的python web框架,采用了MVC的框架模式,即模型M,视图V和控制器C,自带的功能比较多和全面,适合快速开发。

设计过程:

其实刚开始我只是学习在学习Python爬虫时跟随着教程写了一个可以查询自己学校成绩的代码,只是在命令行中显示出来成绩显得很不友好,后来想算学分积的话就要做一个图形化界面,然后就想到了做一个网页。

1.网络爬虫的实现:

相关教程:

Python2爬虫学习系列教程 | 静觅

如何入门 Python 爬虫? - 知乎

这个爬虫也就是查询学分积的核心,一共包含四个部分:

1.模拟登陆到教学管理系统

2.抓取成绩界面

3.从里边提取出成绩信息

4.将成绩信息以每学科,每学期的形式进行整理

1.模拟登陆到教学管理系统

首先打开浏览器(我用的是Chrome浏览器),打开登陆界面,按F12进入开发者模式。

再点登陆,在Network窗口下点最上边的login.action,然后就可以看到Headers的详细信息

在这里可以看到请求的url,请求方式为POST,还有Request Headers,以及最重要的是下边的表单提交内容,学校的毕竟做的比较简陋,用的是明文的。然后在下边模拟登陆的过程中就要用到这两个数据usernamepassword,关于encodePasswordsession_locale:zh_CN,我发现加不加都没有影响,注意参数的名字也不能有误,要和上边的保持一致。

接下来就是要实现 模拟登陆了,就像登陆一样,目的都是为了让服务器能够识别用户的身份,进行session跟踪而储存在用户本地终端上的数据(通常经过加密),这里为了实现模拟登陆就要用到Python的urlliburllib2,以及cookielib模块。urllib和urllib2主要用来执行各种HTTP请求,cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。Cookielib模块非常强大,我们可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送,以此来实现模拟登录功能。这里相关模块的具体用法都不再具体说明,可以自己去搜相关的文档。学校的网站不用添加headers就可以直接登录了。

模拟登陆代码如下所示:

import urllib
import urllib2
import cookielib
import re
import string
import types
class NPU:

    def __init__(self,name,passwd):
        #登录URL
        self.loginUrl = 'http://us.nwpu.edu.cn/eams/login.action'
        #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
        self.cookies = cookielib.MozillaCookieJar('cookie.txt')
        self.postdata = urllib.urlencode({
            'username':name,
            'password':passwd,
            'encodedPassword':'',
            'session_locale':'zh_CN',
         })
        #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
        #handler = urllib2.HTTPCookieProcessor(cookie)
        #通过handler来构建opener
        #opener = urllib2.build_opener(
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值