您的位置:首页 > 编程语言 > Python开发

python小爬虫—获取学校教务处成绩

2017-08-09 21:23 267 查看

开始想自己计算一下绩点,所以第一个小爬虫就从抓取自己成绩开始

1.工具: chrome浏览器 vscode

2.先来分析一下学校教务处成绩管理系统的结构,用的竟然是frame标签!!首先是一个输入学号的表单,找到表单后发现是一个post提交



这里是提交的数据



3.找到这些模拟登陆就变得很容易了,下面贴代码

import cgi
import cgitb
import json
import io
import pandas
import requests
from bs4 import BeautifulSoup
import json

form=cgi.FieldStorage()
studentId=form.getvalue('id')

def requestsData(url,headers,data):
r=requests.post(url,headers=headers,data=data)
return r

def htmlParser(r):
soup=BeautifulSoup(r.text,'lxml')
grades=soup.find_all('table')[3]
tr_list=grades.find_all('tr')
td=[tr.find_all('td') for tr in tr_list][1:]
for data in td:
a={"subject_id":data[1].text.lstrip('\xa0'),"subject_name":data[5].text.lstrip('\xa0'),"subject_xf":data[7].text.lstrip('\xa0'),"subject_grade":data[9].text.lstrip('\xa0')}
yield(a)

def fileWrite(data):
for a in data:
with open('file.txt','a',encoding='utf-8') as f:
f.write(json.dumps(a,ensure_ascii=False)+'\n')
f.close()

def main():
url='http://210.44.176.116/cjcx/zcjcx_list.php'
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'
}
data={
'post_xuehao':'学号'
}
html=requestsData(url,headers,data)
fileWrite(htmlParser(html))

main()
if __name__ == '__main__':
main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫