public Parser(final Retriever the_retriever, final String the_initial_page,
			final List<String> the_keywords_list, final int the_max) {
		my_retriever = the_retriever;
		my_keywords_list = the_keywords_list;
		my_keyword_map = new HashMap<String, Integer>();
		my_max = the_max;
		setInitialPage(the_initial_page);
		my_document_stack = new Stack<String>();

		my_text = new ArrayList<String>();
		my_urls = new Elements();

		my_document_stack.push(the_initial_page);

		ArrayList<String> history = new ArrayList<String>();

		int i = the_max;

		while (!my_document_stack.isEmpty() && i > 0) {
			if (history.contains(my_document_stack.peek())) {
				my_document_stack.pop();
			} else {
				my_initial_page = my_retriever
						.addPage(my_document_stack.peek());
				history.add(my_document_stack.pop());
				getAllLinks();
				getAllText();
				i--;
			}
		}

		callAnalyzer();
	}