private static FSPlayerObject processFSPlayerPage(FSPlayerObject playerObject, String seasonYear) throws Exception{
		// Get player HTML
		Parser parser = new Parser (FS_PLAYERPAGE_FILENM);
		parser.setEncoding("UTF-8");
		
		if (parser.parse(new StringFilter(NO_DATA_STRING)).size() == 0){ // check to ensure data is available
			parser.reset();
				
			// Create method variables
			org.htmlparser.util.NodeList parsedNodes;
			String teamName = "";
			String position = "";
			
			// Get Team Data
			parsedNodes = getFSPLayerCharacteristic(parser, TEAM_STRING);
	
			if (parsedNodes.size() == 1){
				String [] temp = parsedNodes.elementAt(0).getParent().getNextSibling().getText().trim().split("[\\(\\)]");
				teamName = temp[temp.length - 1];
			}
		    	
			parser.reset();
			
			// Get Position Data
			parsedNodes = getFSPLayerCharacteristic(parser, POSITION_STRING);
			
			if (parsedNodes.size() == 1){
				position = parsedNodes.elementAt(0).getParent().getNextSibling().getText().trim();
			}
				    	
			parser.reset();
					
			// Get nodes that have player stats in them
			parsedNodes = getStatsNodes(parser);
			
			// Create the stat hash for this season
			ArrayList<FSPlayerSeasonHash> statVals = new ArrayList<FSPlayerSeasonHash>();
			
			// Iterate through nodes
			for (int i = 0; i < parsedNodes.size(); i++){
				// Create individual Hash for this subclass
				FSPlayerSeasonHash statHash = new FSPlayerSeasonHash();
				
				// Each node should be a tag
				org.htmlparser.Tag statNode = (org.htmlparser.Tag)parsedNodes.elementAt(i);
				
				// Special Case for Fantasy Element
				if (i == 0){
					statHash.setBaseClassName("FantasyIndex");
					statHash.setSubClassName("");
				}
				else{
					// Get the base and sub-class names from parents and previous siblings
					statHash.setBaseClassName(statNode.getParent().getFirstChild().getNextSibling().getFirstChild().getText().replace(" ", ""));
					statHash.setSubClassName(statNode.getPreviousSibling().getPreviousSibling().getFirstChild().getText().replace(" ", ""));
				}	
				
				// Get the individual stat data from within the node - filter out non <li> nodes
				org.htmlparser.util.NodeList childNodes = statNode.getChildren();
				childNodes.keepAllNodesThatMatch(new TagNameFilter("li"));
					
				// For each stat, extract the stat name and value from its child nodes
				for (int j = 0; j < childNodes.size(); j++){
					org.htmlparser.util.NodeList individualStatNodes  = childNodes.elementAt(j).getChildren();
					
					// Special Case for Fantasy Element 
					if (i == 0 && individualStatNodes.size() == 4){
						statHash.addAttributeValue(individualStatNodes.elementAt(1).toPlainTextString().replace(" ", "").replace(":", ""), individualStatNodes.elementAt(3).toPlainTextString().replace(" ", ""));
					}
					else{		
						// Stat Name child one, stat value child two
						statHash.addAttributeValue(individualStatNodes.elementAt(0).toPlainTextString().replace(" ", "").replace(":", ""), individualStatNodes.elementAt(1).toPlainTextString().replace(" ", ""));
					}
				}	
				statVals.add(statHash);
			}
		
			// Add season data to PlayerObject
			playerObject.addSeasonsData(seasonYear, teamName, position, statVals);
		}		
		
		return playerObject;
	}