python:利用urllib查找计算机二级准考证号

陕西省的计算机考试查询用的是准考证号和身份证号,但是准考证丢了怎么办?

如果问同考场的倒是可以推出来,至少可以把范围缩小到很小。那么用计算机怎么解决呢?本文就是利用Python的urllib来解决这个问题

 python的urllib库可以完成网页内容的获取,常用于网络爬虫。

urllib的主要函数:

urllib.urlopen(url[, data[, proxies[, context]]])

 

 打开一个链接,必要一个参数url,后面可选参数(实现利用post和get带参数打开)

返回一个网络对象,有这些函数:

  • read(),读取内容
  • readline(),读取一行
  • readlines(),读取多行
  • fileno(),
  • close(),关闭
  • info(),获得信息(头)
  • getcode(),获得返回的状态,200表示成功,404没有找到网页
  • geturl().获得这个链接

具体的可以查看文档。

 


 

urllib.urlretrieve(url[, filename[, reporthook[, data]]])

将链接内容保存到本地


 

 

 

urllib.urlencode(query[, doseq])

 

将一个array转换成url的参数列表形式。这个在带参数的时候很有用

 

 


 

 

其他功能函数还有很多,文档里面都很详细。

 

开始编程

我的思路是:

  1. 打开链接
  2. 保存到本地
  3. 查询

首先查看网页源代码

 从表单处可以知道你要访问的url,这里是访问的一个jsp的action,方式是post,所以在用urllib.open的时候就要知道怎么用post方式。

可以看到需要带的参数有年份(year),准考证号(ksh)和身份证号(sfzh)

那么首先前两步的代码如下:

# coding=utf-8
import urllib

id='513xxxxxxxx' #身份证号

for num in range(0,9999):#轮询范围
    
    startNo=6542610047050000+num 
    startstr=str(startNo)
    value = {#需要带的三个参数
        'year':'2015s',
        'ksh':startstr,
        'sfzh':id
    }
    params = urllib.urlencode(value)
    f = urllib.urlopen('http://www.sneac.com/qgjsjdjkscx/qgjsjdjkscx_jg.jsp?wbtreeid=3023', params)#以post方式打开链接
    
    temp=str(f.read())#获取网页内容
    #将网页内容保存到本地
    fh=open('a'+str(num)+'.html','w')
    fh.write(temp)
    fh.close()

 

这个实现了将每个网页保存下来。

下面这个程序实现查找每个文件里面有没有需要的字符串

# coding=utf-8
for num in range(0,9999):
    fh=open('a'+str(num)+'.html','r')
    strnum=str(fh.read().find("name"))#要查找的姓名
    if strnum!='-1':
        print str(num)+"  "+strnum
    fh.close()

 

 

这样就可以利用电脑自动查找正确的准考证号了。

 

 

posted @ 2015-05-05 17:17  文宁  阅读(717)  评论(0编辑  收藏  举报