做了许多爬虫的小练习,都是比较简单的爬虫程序,像下小说啊,爬取一个网站内所有的页面之类的。基本上都是看着别人的需求,按照别人的思路,来写程序。
心想,能不能自己构思,弄一个自己的小程序,解决自己的实际需求。楼主还是个学生,恰好这学期期末了,可以在学校的网站上查询自己的成绩了,于是就想着能不能自己做一个爬虫,从自己学校的网站上爬取一些自己的信息呢?
说干就干,于是开始琢磨网站的结构、网页的URL、请求数据包一类的。首先先来查询成绩的整个流程吧!
需求:
这是学校成绩查询的网址 http://yjxt.bupt.edu.cn
结构比较简单,输入学号,密码,验证码,选择身份之后点击登录就会出现主页面了:
点击课程成绩信息查询,在右侧就显示出所有的成绩信息了:
我们要做的就是爬取这个表格中所有的数据了。
1、准备工作:
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')
这样就能看到传输内容了。如下图:
2、登录页面
首选我们来看一下登录页面的组成结构:
打开登录页面-按F12调出调试工具,看一下表单的结构:
我们可以看到用户名和密码的 name属性分别为 UserName,PassWord。
我们先打开Network调试视图,然后填好用户名和密码以及验证码尝试登录一下(当然输入的用户和密码是错误的),在Network视图中可以看到我们向服务器发出的请求报文结构以及服务器返回的数据结构:
在这里我们可以看到,从我们点击登录直到登录失败,一共产生了3次数据交换,如上图:
第一个数据包:UserLogin.aspx?exit=1 这个是登录的请求,我们点开它可以看到如下图所示的数据结构:
我们可以看到,上图中,我们请求的