您的位置:首页 > Web前端 > JavaScript

Jsoup 网页抓取数据之获取汽车时刻表 实例解析

2015-12-24 11:30 686 查看
第一步导入jsoup jar 工具包

下载链接:
http://download.csdn.net/detail/wei_chong_chong/9371825
import java.io.IOException;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class jsoup3 {

	/**
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		/* 
		 * 注意传入的目的地和出发地要真实,时刻表要是真实的日期(过期的日期有时好像查不到,日期格式如下)
		 * */
		String[] timelist_string = getTime("开封", "焦作","2015-12-20"); 

		for(int k = 0;k<timelist_string.length;k++){
			System.out.println(timelist_string[k]);
		}
	}
	/*
	 * 获取汽车站的时刻表
	 * 传入出发地和目的地和日期获取发车的时刻表
	 * 注意传入的目的地和出发地要有客运汽车,时刻表要是真实的日期(过期的日期 查不到)
	 * 
	 * */

	public static String[] getTime(String start,String end,String date) throws IOException{
		String url = "http://bus.ctrip.com/busList.html?from="+start+"&to="+end+"&date="+date;
		String html= getHtmlByUrl(url);
		//System.out.println(html);
		Document doc = Jsoup.parse(html);
		//Elements newlist=doc.getElementsByClass("tb_railway_list");
		Elements list = doc.getElementsByClass("package_line");
		//System.out.println(list);

		String[] timelist = new String[list.size()/4];
		int i = 0;
		int j = 1;
		//System.out.println(list);
		for (Element element :list) {
			String newtime = (element.getElementsByClass("railway_time").text().trim());
			/*
			 * 因为每个数据后面都有3个空白行
			 * 所以这里做一下处理
			 * 
			 * */

			if(j%4==1){
				timelist[i++]=newtime;
			}
			j++;
			//System.out.println(newtime);
		}
		return timelist;
	}
	/*
	 * 根据url获取网页源码
	 * **/
	public static String getHtmlByUrl(String url) throws IOException{
		Document doc2 = Jsoup.connect(url).get();
		return doc2.body().toString();
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: