根據學生名單(excel文件)對QQ羣成員進行統計(助教可能會需要)


簡要說明:
現有一份課堂的學生名單excel文件,根據學生名單對QQ羣中的成員進行統計,找出【在名單中的同學】與【不在名單中的同學】。


思路:
將網頁中某一部分元素copy出來,進行xml分析。


要求:
1、Excel文件第C列爲學生姓名。
2、QQ羣內所有人的名字格式都是:【姓名-班級】或【姓名】或【空】。


具體步驟:

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

新建文件input.html,將上圖框出的代碼copy到input.html文件中。
在這裏插入圖片描述
運行程序test.py進行分析,代碼如下:

######################################################################
#
# 使用方法:
# 1、人工確保所有名字格式嚴格正確(“姓名”或者“姓名-班級”)。
# 2、將qq羣成員管理網頁html中的table元素copy到input.html中。
# 3、運行程序。
# 
######################################################################

from lxml import etree
import xlrd

lines = open('input.html', encoding='utf-8').readlines()

html=''
for line in lines:
    html += line;

page = etree.HTML(html)
members = page.findall('.//table[@id="groupMember"]/tbody[@class="list"]/tr')

count = 0
insiders_num = 0
outsiders_mum = 0
data=xlrd.open_workbook(r'計算機xx選課名單.xls')
sheet1 = data.sheets()[0]
outsiders = [] # 存放不在名單中的人

for member in members:
    name = member.findall('.//td[@class="td-card"]/span/span')
    if name[0].text == None: # 如果羣名稱爲空
        name = ""
    else:
        name = name[0].text.strip().split('-')[0]
    qq = member.findall('.//td')[4]
    qq = qq.text.strip()
    
    print (str(count+1)+':', end=' ')
    print (name,end=' ')

    # 搜索name是否在excel名單中
    flag = False
    if (len(name) >= 2 and len(name) <= 3):
        rows = sheet1.nrows
        for i in range(rows):
            excel_mem_nam = str(sheet1.cell(i,2).value)
            if (excel_mem_nam.find(name) != -1):
                flag = True
                break

    if (flag): # 如果在excel名單中
        insiders_num += 1
        print ('yes')
    else: # 否則
        outsiders.append([name,qq])
        outsiders_mum += 1;
        print ('no')

    count += 1

assert (outsiders_mum == len(outsiders))

print ()
print ("羣總人數:" + str(count))
print ("在名單中的人數:" + str(insiders_num))
print ("不在名單中的人數(包含助教):"+str(outsiders_mum))

assert (count == insiders_num + outsiders_mum)

print ()
print ("不在名單中的人如下(羣內名稱,qq號):")
for mem in outsiders:
    print (mem)

運行結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章