def _parseUser(self, data): user = User() user.id = data[0] user.name = data[1] user.country = data[2] user.solved = data[3] user.submitted = data[4] user.ratio = data[5] return user
def parseUsers(fromRank): fromRank -= 1 url = "http://acm.tju.edu.cn/toj/ranklist.php?start=%d" % fromRank html = _readURL(url) lines = html.split('\n') users = list() linePos = 29 while linePos < len(lines): token = lines[linePos] if token.find("</table>") == 0: break user = User() user.name = _getContent(token, len(token)-10, 0) user.rank = (linePos - 29) / 3 + fromRank + 1 end = len(token) - 17 - len(user.name) user.id = _getContent(token, end, 0, "\"") user.id = user.id[5 : ] user.country = _getContent(token, end - len(user.id) - 25, 0, "\"").title() token = lines[linePos+1] while lines[linePos+2].find("<td>") != 0: token += lines[linePos+2] linePos += 1 user.solved = int(_getContent(token, len(token)-17, 0)) token = lines[linePos+2] end = len(token) - 11 ratio = _getContent(token, end, 0) if ratio != "??": user.ratio = float(ratio) end -= len(ratio) + 9 perc = _getContent(token, end, 0) end -= 13 + len(perc) user.submitted = int(_getContent(token, end, 0)) users.append(user) linePos += 3 return users