摘要:网络爬虫简单的说就是用程序替你获取你想要的数据,也叫自动检索工具。
比如说在携程网上获取上海酒店的信息,代码如下:
比如说在携程网上获取上海酒店的信息,代码如下:
package com.tz.util;
import java.io.*;
import java.net.*;
import java.util.*;
import org.jsoup.*;
import org.jsoup.nodes.*;
import org.jsoup.select.Elements;
/**
* @ClassName:CopyOfDateDownUtil
* @Description:数据爬取核心类
* @author
* @date
*/
public class CopyOfDateDownUtil {
/**
* @Title:getHrmlResourceByUrl
* @Description:获取网页源代码
* @param url
* 网址
* @param encoding
* 编码集
* @return String 返回类型
* @throws
*/
public static String getHrmlResourceByUrl(String url, String encoding) {
// 存储
StringBuffer buffer = new StringBuffer();
URL urlObject = null;
URLConnection uc = null;
InputStreamReader isr = null;
BufferedReader reader = null;
try {
// 建立连接
urlObject = new URL(url);
// 打开连接
uc = urlObject.openConnection();
// io流 输入 形容词 相对性
isr = new InputStreamReader(uc.getInputStream());
// 缓冲 内存 暂时存取
reader = new BufferedReader(isr);
// 临时文件
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
} catch (Exception e) {
// TODO: 当出现异常是,将异常信息打印在控制台
e.printStackTrace();
} finally {
try {
if (isr != null)
isr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return buffer.toString();
}
/***
* @Title:getHtmlHotelInfo
* @Description:数据筛选 获取酒店名称和酒店介绍
* @param url
* 网址
* @return List<HashMap<String,String>> 返回类型
*/
public static List<HashMap<String, String>> getHtmlHotelInfo(String url) {
// 获取网页源代码
String html = getHrmlResourceByUrl(url, "utf-8");
// 解析源代码
Document document = Jsoup.parse(html);
// 拿到最外层盒子
Element element = document.getElementById("hotel_list");
// 拿到每一个
Elements elements = document.getElementsByClass("searchresult_list");
//集合
List<HashMap<String,String>> maps=new ArrayList<HashMap<String,String>>();
for (Element el : elements) {
HashMap<String, String> map = new HashMap<String, String>();
// 获取酒店的图片
String imgSrc=el.getElementsByTag("img").attr("src");
//获取的标题
String title=el.getElementsByTag("img").attr("alt");
//获取描述信息
String content =el.getElementsByClass("searchresult_htladdress").text();
map.put("imgSrc", imgSrc);
map.put("title", title);
map.put("content", content);
maps.add(map);
}
return maps;
}
public static void main(String[] args) {
List<HashMap<String,String>> list= getHtmlHotelInfo("http://hotels.ctrip.com/hotel/shanghai2#ctm_ref=hod_hp_sb_lst");
for (HashMap<String, String> hashMap : list) {
System.out.println("酒店的title:"+hashMap.get("title"));
System.out.println("酒店的图片:"+hashMap.get("imgSrc"));
System.out.println("酒店的描述:"+hashMap.get("content"));
}
}
}
注意:需导入jsoup-1.8.1.jar包