强智科技·教务网成绩爬取系列文章之数据清洗与整理

operator库中的itemgetter在对二维列表等进行排序时,对指定key值非常方便。
例如:

1 data = [[1, '湖南', '长沙'], [2,'山西','平遥']]
2 data = sorted(data, key=itemgetter(0))

即按data二维列表的第0号元素排序,再返回给data。

用到的库:re、operator


1、数据清洗

主要是对获取到的成绩源数据(html文本)通过正则表达式匹配进行筛选,从而获得我们想要的数据。

一般情况下,网页上的数据都是按一定格式排列的,我们找到这种规律,就可以对它进行清洗了。

1 import re
2 from orignal_data import main  #导入自定义函数:main
3
4 text = main(verifycode_, cookies_, usr, pwd, kksj)
5 regex = re.compile(r'title="null" >(.*?)')
6 orignal_data = regex.findall(text)  #把所有成绩列表的数据保存为一个一维列表:orignal_data

2、数据整理

把清洗后的数据重排为可以展示给用户查看的具有数据结构的格式:二维列表。

 1data = []
 2#判断是否成功清洗了数据
 3if orignal_data:
 4    for i in range(0,len(orignal_data)):
 5        if orignal_data[i] == usr:
 6            data.append(orignal_data[i:(i+10)])
 7    n = 0
 8    while True:
 9        try:
10            if data[n][-1] != '正常':
11                data[n].insert(6, '--')
12            else:
13                data[n].append(' ')
14            n += 1
15        except:
16            break
17    data = sorted(data, key=itemgetter(2, 3), reverse=True)

完整源代码

 1import re
 2from operator import itemgetter
 3
 4from orignal_data import main
 5
 6def parser_data(verifycode_, cookies_, usr ,pwd, kksj):
 7    '分析数据'
 8    #清洗数据
 9    text = main(verifycode_, cookies_, usr, pwd, kksj)
10    regex = re.compile(r'title="null" >(.*?)')
11    orignal_data = regex.findall(text)
12    #整理数据
13    data = []
14    if orignal_data:
15        for i in range(0,len(orignal_data)):
16            if orignal_data[i] == usr:
17                data.append(orignal_data[i:(i+10)])
18        n = 0
19        while True:
20            try:
21                if data[n][-1] != '正常':
22                    data[n].insert(6, '--')
23                else:
24                    data[n].append(' ')
25                n += 1
26            except:
27                break
28        data = sorted(data, key=itemgetter(2, 3), reverse=True)
29
30    return data

唔~ 码完这一弹,就要告一段落了,我要去野外进行为期半个月的实习了,一个叫大围山的地方。条件艰苦,电脑无法随行,先停更半个月喽~ 请叫我佛系小编。

你可能感兴趣的:(强智科技·教务网成绩爬取系列文章之数据清洗与整理)