python爬虫实例-爬取北邮研究生成绩

python爬虫实例-爬取北邮研究生成绩,涉及到获取sessionID , 验证码图片识别,StringIO,网页编码,python的debug log
摘要由CSDN通过智能技术生成

做了许多爬虫的小练习,都是比较简单的爬虫程序,像下小说啊,爬取一个网站内所有的页面之类的。基本上都是看着别人的需求,按照别人的思路,来写程序。

心想,能不能自己构思,弄一个自己的小程序,解决自己的实际需求。楼主还是个学生,恰好这学期期末了,可以在学校的网站上查询自己的成绩了,于是就想着能不能自己做一个爬虫,从自己学校的网站上爬取一些自己的信息呢?

说干就干,于是开始琢磨网站的结构、网页的URL、请求数据包一类的。首先先来查询成绩的整个流程吧!

需求:

这是学校成绩查询的网址 http://yjxt.bupt.edu.cn


结构比较简单,输入学号,密码,验证码,选择身份之后点击登录就会出现主页面了:


点击课程成绩信息查询,在右侧就显示出所有的成绩信息了:



我们要做的就是爬取这个表格中所有的数据了。

1、准备工作:

熟话说,磨刀不误砍材工,我们首先要先准备好开发和调试需要的工具。
开发环境:楼主用的是WIN7 64位系统,但是安装的python2.7 32bit的,安装了最新的Eclipse+pydev。
浏览器:用到了UC浏览器(这个也是刚使用没多久的浏览器,调试以及插件仓库都是用的chrome的,个人感觉上比chrome还要快一点,所以就一直用着),主要用来分析网页结构,浏览器请求和响应报文的解析
文档比较器:BCompare。Beyond Compare 是一个综合的比对工具。 可比对的对象包括纯文字档、资料夹、zip 压缩案、FTP 站,等等。 您可以使用它管理您的原始档、保持比对资料夹同步、比对程式的输出结果、以及检查所烧入光碟备份的精确度。Beyond Compare 的主要目标还是帮助您详尽的分析差异之处,并且对它们进行详尽的处理。 软体内部包含了许多档案和资料夹命令动作。如果网页中有一些动态生成的序列id什么的元素,可以对比网页源代码,找出这些不同之处,很是方便。
验证码解析:这个可以参考另外一篇关于验证码识别的一篇文章,介绍了如何用pytesser来识别验证码。http://blog.csdn.net/zq602316498/article/details/37817341

抓包工具: wireshark,大名鼎鼎的抓包工具。因为要使用python发数据包的话,不像chrome浏览器那样能将报文头部,post数据结构啥的都能分析出来,python发包如果出了bug的话,没有抓包软件是挺麻烦的一件事情。当然也可以通过设置urllib2打开debug模式,方法如下:
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)
response = urllib2.urlopen('http://www.google.com')
这样就能看到传输内容了。如下图:

运行的时候,发送的请求包以及响应都列了出来。我们可以运行多次,然后将多次的值日志通过前面提到BComare软件对比日志记录,来分析程序可能出现的问题。如下图是两次运行日志的对比界面。


2、登录页面

首选我们来看一下登录页面的组成结构:

打开登录页面-按F12调出调试工具,看一下表单的结构:


我们可以看到用户名和密码的 name属性分别为 UserName,PassWord。

我们先打开Network调试视图,然后填好用户名和密码以及验证码尝试登录一下(当然输入的用户和密码是错误的),在Network视图中可以看到我们向服务器发出的请求报文结构以及服务器返回的数据结构:


在这里我们可以看到,从我们点击登录直到登录失败,一共产生了3次数据交换,如上图:

第一个数据包UserLogin.aspx?exit=1 这个是登录的请求,我们点开它可以看到如下图所示的数据结构:



我们可以看到,上图中,我们请求的
地址为:http://yjxt.bupt.edu.cn/UserLogin.aspx?exit=1 ,
请求的方式为:post,
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值