博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java实现简单爬虫
阅读量:5967 次
发布时间:2019-06-19

本文共 3285 字,大约阅读时间需要 10 分钟。

hot3.png

java实现一个小型爬虫:

提供页面网址和页面编码,即可实现从提供的网址中爬取数据。例如:

/** *  */package com.dmc.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;/** * ClassName: DataDownloaderUtil * Package :com.dmc.util * Description: 搜索引擎爬虫技术  批量抓取 * Company: DMC * @author will * @date 2015年12月12日 上午9:38:35 * @version v1.0 */public class DataDownloaderUtil {		/**	 * 根据网址和页面的编码集  获取网页的源代码	 * @author john	 * @param url 需要被获取源代码的网址	 * @param encoding  网页的编码集	 * @return String 网页的源代码	 * 	 * */	public static String getHtmlResourceByUrl(String url ,String encoding){				// 存储源代码的容器		StringBuffer buffer = new StringBuffer();		// 建立网页连接		URL urlObj = null;		// 打开网络连接		URLConnection uc = null;		// 建立文件的写入流		InputStreamReader isr = null;		// 在内存中建立缓冲写入流		BufferedReader reader = null;						try {			// 建立网页连接			urlObj = new URL(url);			// 打开网络连接			uc = urlObj.openConnection();			// 建立文件的写入流			isr = new InputStreamReader(uc.getInputStream(),encoding);			// 在内存中建立缓冲写入流			reader = new BufferedReader(isr); 			// 建立临时文件			String temp = null;			// 循环读取网页源码			while((temp = reader.readLine()) != null){				// 添加到buffer的尾部				buffer.append(temp+"\n");			}		} catch (MalformedURLException e) {			e.printStackTrace();			System.out.println("世界上最遥远的距离就是没网,请检查网络设置!!!");		} catch (IOException e) {			e.printStackTrace();			System.out.println("您的网络打开失败,请稍后重试......");		} finally {			if(isr != null){				try {					isr.close();				} catch (IOException e) {					e.printStackTrace();					System.out.println("文件写入流关闭失败。");				}			}		}				return buffer.toString();	}		public static void main(String[] args) {				String url = "http://tuan.ctrip.com/group/hotel/city_shanghai/#ctm_ref=gro_hp_ac_def_b";		String encoding = "gb2312";				// 创建一个List集合		List
> maps = new ArrayList
>(); // 根据网址和页面编码集获取网页的源代码 String html = getHtmlResourceByUrl(url, encoding);// System.out.println(html); // 解析源代码 Document document = Jsoup.parse(html); // 获取酒店最外层的div盒子源代码 id="hot_list" Element element = document.getElementById("gp-list-left"); // 获取酒店结果列表 class="searchresult_info" Elements elements = document.getElementsByClass("gp-list-box"); // 遍历 for(Element el : elements){ // 采用集合存储获取到的所有酒店信息 HashMap
map = new HashMap
(); // 获取酒店的图片 String imgSrc = el.getElementsByTag("img").attr("src"); // 获取酒店的名字 String title = el.getElementsByTag("h3").text(); // 获取酒店描述 String content = el.getElementsByTag("p").text(); // 获取酒店链接 String href = el.getElementsByTag("a").attr("href"); map.put("imgSrc", imgSrc); map.put("title", title); map.put("content", content); map.put("href", href); maps.add(map); } // 筛选 if(maps != null && maps.size() > 0){ for(HashMap
map : maps){ System.out.println("酒店的名字:"+ map.get("title")); System.out.println("酒店的图片:"+ map.get("imgSrc")); System.out.println("酒店的描述:"+ map.get("content")); System.out.println("酒店的链接地址:"+ map.get("href")); } } }}

 

转载于:https://my.oschina.net/AaronDMC/blog/749401

你可能感兴趣的文章
Backbone模型
查看>>
Ubuntu配置和修改IP地址
查看>>
mysql__CASE WHEN进行字符串替换处理
查看>>
Android手机安全性测试手段
查看>>
规则执行管理平台中远程和服务管理的学习1
查看>>
Jvm工作原理学习笔记(转)
查看>>
线程池的拒绝策略(重要)
查看>>
Windows系统下SSH客户端连接阿里云Linux服务器
查看>>
db2 日期处理
查看>>
树莓派3B+ (PPOE+hostapd)变身无线路由器
查看>>
我的友情链接
查看>>
javascript的规范
查看>>
程序中减少使用if语句的方法集锦
查看>>
struts2 在线用户记录
查看>>
Eclipse常用快捷键
查看>>
mount error 12 = Cannot allocate memory
查看>>
Spring工作原理详解
查看>>
Protobuf动态解析那些事儿
查看>>
浮点数:一种有漏洞的抽象【译】
查看>>
mysql修改初始密码
查看>>