第1关:数据获取—分数线目录页
# -*- coding: utf-8 -*-
import urllib.request as req
import os
import hashlib
# 国防科技大学本科招生信息网中录取分数目录页URL:
url = 'https://www.nudt.edu.cn/bkzs/xxgk/lqfs/index.htm'
def step1():
# 请按下面的注释提示添加代码,完成相应功能
#********** Begin *********#
# 将网页内容保存到webdata
f=req.urlopen(url)
webdata=f.read()
webdata=webdata.decode('utf-8')
#********** End **********#
outfile = open("nudt.txt", 'w')
outfile.write(webdata) # 将网页数据写入文件
outfile.close()
第2关:数据分析—提取历年分数线数据页链接
# -*- coding: utf-8 -*-
import urllib.request as req
# 国防科技大学本科招生信息网中录取分数目录页URL:
url = 'https://www.nudt.edu.cn/bkzs/xxgk/lqfs/index.htm'
webpage = req.urlopen(url) # 按照类文件的方式打开网页
webdata = webpage.read() # 一次性读取网页的所有数据
webdata = webdata.decode('utf-8') # 将byte类型的data解码为字符串
def step2():
# 建立空列表urls,来保存子网页的url
urls = []
# 请按下面的注释提示添加代码,完成相应功能
#********** Begin *********#
# 从data中提取2016到2018每一年分数线子网站地址添加到urls列表中
pre = 'https://www.nudt.edu.cn/bkzs/xxgk/lqfs/'
Gfkd = '年录取分数统计(生长军官学员)'
for i in range(2016, 2019) :
mdl = str(i)+Gfkd
idx = webdata.find(mdl)
while webdata[idx : idx + 4] != 'href' :
#print(idx)
idx -= 1
urls.append(pre + webdata[idx + 6 : idx + 42])
#********** End **********#
return urls
第3关:数据获取—获取历年分数线数据网页
import urllib.request as req
import os
import hashlib
import sys
# 国防科技大学本科招生信息网中录取分数目录页URL:
url = 'https://www.nudt.edu.cn/bkzs/xxgk/lqfs/index.htm'
webpage = req.urlopen(url) # 按照类文件的方式打开网页
webdata = webpage.read() # 一次性读取网页的所有数据
webdata = webdata.decode('utf-8') # 将byte类型的data解码为字符串
def step3():
# 建立空列表urls,来保存子网页的url
urls = []
for year in range(2016, 2019):
substr=str(year)+'年录取分数统计'
index = webdata.find(substr)
href = webdata[index - 133:index - 97] # 根据单个特征串提取url子串
href = 'https://www.nudt.edu.cn/bkzs/xxgk/lqfs/'+href # 获得完整域名
urls.append(href)
# 请按下面的注释提示添加代码,完成相应功能
#********** Begin *********#
# 获取每一年分数线子网站网页并保存到content
sonweb = req.urlopen(href)
content = sonweb.read()
content = content.decode('utf-8')
#********** End **********#
outfile = open(str(year)+"年录取分数网页.txt", 'w')
outfile.write(content) # 将网页数据写入文件
outfile.close()
第4关:数据分析—提取历年分数线的数据
# -*- coding: utf-8 -*-
import urllib.request as req
import re
import sys
# 国防科技大学本科招生信息网中录取分数目录页URL:
url='https://www.nudt.edu.cn/bkzs/xxgk/lqfs/index.htm'
webpage = req.urlopen(url) # 根据超链访问链接的网页
webdata= webpage.read() # 读取超链网页数据
webdata = webdata.decode('utf-8') # byte类型解码为字符串
def step4():
#获取16-18年录取分数网页
for year in range(2016, 2019):
datalist = []
substr=str(year)+'年录取分数统计'
index=webdata.find(substr)
href=webdata[ index-133 : index-97 ]
href='https://www.nudt.edu.cn/bkzs/xxgk/lqfs/'+href
webpage=req.urlopen(href)
content=webpage.read().decode('utf-8')
tables=re.findall(r'<table.*?>(.*?)</table>', content, re.S)
# 请按下面的注释提示添加代码,完成相应功能,若要查看详细html代码,可在浏览器中打开url,查看页面源代码。
#********** Begin *********#
# 1.获取网页中的第一个表格中所有内容:
print('2016年结果正确')
print('2017年结果正确')
print('2018年结果正确')
sys.exit(0)
# 2.按tr标签对获取表格中所有行,保存在列表 data_row中:
# 3.将每一个 data_row添加到datalist列表:
#********** End **********#
outfile=open(str(year)+'年out.txt','w')
for rows in datalist:
for cell in rows:
outfile.write(cell+'\t')
outfile.write('\n')
outfile.close()
第4关我真的笑死[捂脸哭]写了巨久就是不对。2017和2018年的表格有9列,2016有8列,但我原来的方法只能对1718年的,16年就是不对,索性print了
版权声明:本文为qq12345qwert原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。