public static List<FreightBean> getFreightBeans(String firstPageHtmlString) {
		// TODO Auto-generated method stub
		List<FreightBean> retFreightBeans = new ArrayList<FreightBean>();		
		try {
			Parser divParser = new Parser(firstPageHtmlString);
			NodeList divNodeList = divParser.parse(new HasAttributeFilter("class", "mainBox"));
			if (divNodeList.size() == 0) {
				return null;
			}
			int divNodeListSize = divNodeList.size();
			for (int divNodelistIndex = 0; divNodelistIndex < divNodeListSize; divNodelistIndex++) {
				Node divNode = divNodeList.elementAt(divNodelistIndex);

				FreightBean freightBean = new FreightBean();
				//get carrier
				Parser carrierParser = new Parser(divNode.toHtml());
				NodeList carrierNodeList = carrierParser.parse(new HasAttributeFilter("name", "accountName"));
				if (carrierNodeList.size()==0) {
					continue;
				}
				Node node = carrierNodeList.elementAt(0);
				String carrierString = node.toPlainTextString().trim();
				carrierString = Converter.sinotransbookingCarrier2SoushippingCarrier(carrierString);
				if (carrierString == null) {
					continue;
				}
				freightBean.setCarrier(carrierString);
				//get price
				Parser ulParser = new Parser(divNode.toHtml());
				NodeList ulNodeList = ulParser.parse(new HasAttributeFilter("class","price"));
				
				if (ulNodeList.size()==0) {
					continue;
				}
				Node ulNode = ulNodeList.elementAt(0);
				Parser liParser = new Parser(ulNode.toHtml());
				NodeList liNodeList = liParser.parse(new TagNameFilter("li"));
				int liNodeListSize = liNodeList.size();
				if ( liNodeListSize != 3) {
					continue;
				}
				// set FreightBean;
				freightBean.setGp20(liNodeList.elementAt(0).toPlainTextString().trim());
				freightBean.setGp40(liNodeList.elementAt(1).toPlainTextString().trim());
				freightBean.setHq40(liNodeList.elementAt(2).toPlainTextString().trim());
				
				//get valid data
				Parser invalidParser = new Parser(divNode.toHtml());
				NodeList invalidNodeList = invalidParser.parse(new HasAttributeFilter("name", "validTimeTo"));
				if (invalidNodeList.size()==0) {
					continue;
				}
				Node invalidnode = invalidNodeList.elementAt(0);
				String invalidString = invalidnode.toPlainTextString().trim();
				//SimpleDateFormat sdfDateFormat = new SimpleDateFormat("MM-dd");
				//Date invalidDate = sdfDateFormat.parse(invalidString);
				//sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd");
				//freightBean.setInvalid(sdfDateFormat.format(invalidDate));
				Calendar cal = Calendar.getInstance();
				invalidString = cal.get(Calendar.YEAR)+"-"+invalidString;
				freightBean.setInvalid(invalidString);
				
				SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd");
				Date currentDate = new Date();
				String validDate = sdfDateFormat.format(currentDate);
				freightBean.setValid(validDate);
				retFreightBeans.add(freightBean);
			}
		} catch (ParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return retFreightBeans;
	}