package com.peidon.html; 

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements; /**
* @author sunshine
* @version 1.0
* @date:2015年8月15日 上午9:01:13
* @description: Java开发搜索引擎爬虫
* jsoup 类似jQuery的强大功能,什么方便解析操作HTML DOM 树
* 关联jar包 jsoup-1.8.3.jar
*/
public class HttpSoup { public static void main(String[] args) { //根据网址和页面的编码集 获取网页的源代码
String htmlResource = getHtmlResourceByUrl("http://www.ui.cn/", "UTF-8");
//System.out.println(htmlResource); //解析源代码
Document document = Jsoup.parse(htmlResource); //获取网页的图片
//网页图片标签<img src="" alt="" width="" height="" />
Elements elements = document.getElementsByTag("img"); for(Element element : elements){
String imgSrc = element.attr("src");
//System.out.println(imgSrc);
downImages(imgSrc,"D:\\test\\images\\");
System.out.println("下载成功:"+imgSrc);
//System.out.println(imgSrc.substring(imgSrc.lastIndexOf("/")));
}
} /**
* 根据一个图片的URL地址,通过这个URL批量下载图片到服务器的磁盘
* @param imageUrl 要下载的服务器地址
* @param filePath 下载完成后保存到服务器的图片地址
*
*/
public static void downImages(String imageUrl, String filePath){
String fileName = imageUrl.substring(imageUrl.lastIndexOf("/")); try {
//创建文件的目录
File files = new File(filePath);
//判断文件是否存在
if(!files.exists()){
files.mkdirs();
}
//获取图片文件的下载地址
URL url = new URL(imageUrl);
//连接网络图片地址
HttpURLConnection uc =(HttpURLConnection) url.openConnection();
//获取连接的输出流
InputStream is = uc.getInputStream(); //创建文件
File file = new File(filePath + fileName);
//创建输出流,写入文件
FileOutputStream out = new FileOutputStream(file);
int i = 0;
while((i = is.read()) != -1){
out.write(i);
}
is.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 根据网址和页面的编码集 获取网页的源代码
* @param url
* @param encoding
* @return
*/
public static String getHtmlResourceByUrl(String url, String encoding){ //声明一个存储网页源代码的容器
StringBuffer buff = new StringBuffer(); URL urlObj = null;
URLConnection uc = null;
InputStreamReader in = null;
BufferedReader reader = null;
try {
//建立网络链接
urlObj = new URL(url); //打开网络链连接
uc = urlObj.openConnection(); //建立网络的输入流
in = new InputStreamReader(uc.getInputStream(),encoding); //缓冲写入的文件流
reader = new BufferedReader(in); String tempLine = null; //循环读取文件流
while((tempLine = reader.readLine()) != null){
buff.append(tempLine + "\n"); //循环追加数据
} } catch (Exception e) { e.printStackTrace();
System.out.println("Conection timeout ...");
} finally {
if(in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
} } return buff.toString();
}
}

Java开发搜索引擎爬虫的更多相关文章

  1. Java开发、网络爬虫、自然语言处理、数据挖掘简介

    一.java开发 (1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好. (2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系 ...

  2. java开发爬虫Deno

    java开发爬虫Deno 身为一个程序员不会两三手爬虫怎么能在行业里立足啊,这是开发中自己写的一个java爬虫的Demo,供大家参考. java爬虫的开发依赖于jsoup.jar 直接上代码 publ ...

  3. Python分布式爬虫开发搜索引擎 Scrapy实战视频教程

    点击了解更多Python课程>>> Python分布式爬虫开发搜索引擎 Scrapy实战视频教程 课程目录 |--第01集 教程推介 98.23MB |--第02集 windows下 ...

  4. 9个基于Java的搜索引擎框架

    在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...

  5. 阿里巴巴Java开发规范手册

      Java开发手册 版本号 制定团队 更新日期 备  注 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向Java业界公开 一.编程规约 (一) 命名规约 1.   [强制]所有编程相关命 ...

  6. 9个基于Java的搜索引擎

    1.Java 全文搜索引擎框架 Lucene 毫无疑问,Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Luc ...

  7. 阿里巴巴 JAVA 开发手册

    阿里巴巴 JAVA 开发手册 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开 一. 编程规约(一) 命名规约1. [强制]所有编程相关命名均不能以下划线或美元符号开始, ...

  8. [转]9个基于Java的搜索引擎框架

    9个基于Java的搜索引擎框架 在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的 ...

  9. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

随机推荐

  1. LoadRunner测试场景中添加负载生成器

    如何在LoadRunner测试场景中添加负载生成器 本文对如何在LoadRunner的测试场景中添加负载生成器,如何使用负载生成器的方法,总结形成操作指导手册,以指导测试人员指导开展相关工作. 1.什 ...

  2. 求余VS求模--C语言中表述

    之前看帖子,发现许多时候基本上大家都把求模和求余混为一谈了.但实际上二者的概念是有区别的   1. 求余 在C语言中,求余对应的操作符是%,且a%b求余的最后结果总是与a符号相同,最后的数值为|a|% ...

  3. springMVC 的工作原理和机制(转)

    工作原理上面的是springMVC的工作原理图: 1.客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web. ...

  4. css -- 导航条

    1.垂直导航条 HTML: <ul class="nav"> <li><a href="">Home</a>&l ...

  5. 在windows环境中用eclipse搭建hadoop开发环境

    1. 整体环境和设置 1.1 hadoo1.0.4集群部署在4台VMWare虚拟机中,这四台虚拟机都是通过NAT模式连接主机 集群中/etc/hosts文件配置 #本机127.0.0.1 localh ...

  6. 餐厅外卖app第三天

    n听

  7. HDU5823 : color II

    每种颜色的点集肯定是独立集,因此可以通过$O(2^n)$枚举每个集合判断出每个集合是否只需要一种颜色即可染色. 设$f[i][S]$表示$i$种颜色覆盖$S$这个集合的方案数,假定两个集合可以相交,那 ...

  8. BZOJ4428 : [Nwerc2015]Debugging调试

    设$f[i]$为最优策略下调试$i$行代码的时间,则: $f[1]=0$ $f[i]=\min((j-1)\times p+f[\lceil\frac{i}{j}\rceil])+r$ 意义为枚举pr ...

  9. 【wikioi】1040 统计单词个数

    题目链接 算法:划分型DP PS:被卡过3天.日期:2013-10-10 ~ 2013-10-12 18:52:48 这题是我提交了13次AC= =汗= = 题目描述: 给出一个长度不超过200的由小 ...

  10. PHP IDE phpstorm 快捷键

    这篇文章主要介绍了PHP IDE phpstorm 常用快捷键,本文分别列出了mac系统和Windows系统下的phpstorm快捷键,需要的朋友可以参考下 一.mac电脑phpstorm快捷键 co ...