public ArticleInfo getArticleInfo(String articleUrl) throws IOException {
		String id = getId(articleUrl);
        String type = null;
        String source = null;
        Integer year = null;
        Integer month = null;
        
    	final HttpRequest request = requestFactory.buildGetRequest(new GenericUrl(articleUrl));
        if (connectTimeout != null) {
        	request.setConnectTimeout(connectTimeout);
        }
        if (readTimeout != null) {
        	request.setReadTimeout(readTimeout);
        }
        
        final HttpResponse response = request.execute();
        try {
            final BufferedReader reader = new BufferedReader(new InputStreamReader(response.getContent(), "UTF-8"));
            try {
            	String line;
            	while ((line = reader.readLine()) != null) {
            		if (line.length() > 300) {
            			continue;
            		}
            		final Matcher citeMatcher = CITE_PATTERN.matcher(line);
            		if (citeMatcher.matches()) {
            			if (citeMatcher.groupCount() == 2) {
            				source = citeMatcher.group(1).trim();
            				final String dateStr = citeMatcher.group(2).trim();
            				year = getYear(dateStr);
            				month = getMonth(dateStr);
            			}
            		}
            		
            		final Matcher typeMatcher = TYPE_PATTERN.matcher(line);
            		if (typeMatcher.matches()) {
            			if (typeMatcher.groupCount() == 1) {
            				type = typeMatcher.group(1);
            			}
            		}
            	}
            } finally {
            	reader.close();
            }
        } finally {
        	response.ignore();
        }
		
		return new ArticleInfo(id, articleUrl, type, source, year, month);
	}