Breve descripción:
Lista de un aula de estudiantes archivo de Excel existentes, las estadísticas sobre los miembros del grupo de QQ de una lista de estudiantes en la lista para encontrar los [estudiantes] y [los estudiantes] no están en la lista.
Ideas:
las páginas de una copia de algunos elementos fuera, sean análisis XML.
Requisitos:
1, el primer archivo de Excel como el nombre del estudiante C.
2, formatos de nombre de usuario QQ grupo son: [Nombre - el nombre de la clase] o [] o [vacío].
Los pasos específicos:
Input.html nuevo archivo, el marco superior para copiar el archivo de código input.html.
Ejecutar el análisis test.py programa, de la siguiente manera:
######################################################################
#
# 使用方法:
# 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)
Los resultados son los siguientes: