Java开发搜索引擎爬虫
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开发搜索引擎爬虫的更多相关文章
- Java开发、网络爬虫、自然语言处理、数据挖掘简介
一.java开发 (1) 应用开发,即Java SE开发,不属于java的优势所在,所以市场占有率很低,前途也不被看好. (2) web开发,即Java Web开发,主要是基于自有或第三方成熟框架的系 ...
- java开发爬虫Deno
java开发爬虫Deno 身为一个程序员不会两三手爬虫怎么能在行业里立足啊,这是开发中自己写的一个java爬虫的Demo,供大家参考. java爬虫的开发依赖于jsoup.jar 直接上代码 publ ...
- Python分布式爬虫开发搜索引擎 Scrapy实战视频教程
点击了解更多Python课程>>> Python分布式爬虫开发搜索引擎 Scrapy实战视频教程 课程目录 |--第01集 教程推介 98.23MB |--第02集 windows下 ...
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...
- 阿里巴巴Java开发规范手册
Java开发手册 版本号 制定团队 更新日期 备 注 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向Java业界公开 一.编程规约 (一) 命名规约 1. [强制]所有编程相关命 ...
- 9个基于Java的搜索引擎
1.Java 全文搜索引擎框架 Lucene 毫无疑问,Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Luc ...
- 阿里巴巴 JAVA 开发手册
阿里巴巴 JAVA 开发手册 1.0.0 阿里巴巴集团技术部 2016.12.7 首次向 Java 业界公开 一. 编程规约(一) 命名规约1. [强制]所有编程相关命名均不能以下划线或美元符号开始, ...
- [转]9个基于Java的搜索引擎框架
9个基于Java的搜索引擎框架 在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的 ...
- 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo
简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...
随机推荐
- MIT 6.828 JOS学习笔记1. Lab 1 Part 1: PC Bootstrap
Lab 1: Booting a PC Part 1: PC Bootstrap 介绍这一部分知识的目的就是让你能够更加熟悉x86汇编语言,以及PC启动的整个过程,而且也会首次学习使用QEMU软件来仿 ...
- 《DSP using MATLAB》示例Example4.8
代码: b = [0,1]; a = [3, -4, 1]; % polynomials coefficients [R,p,c] = residuez(b,a) [b,a] = residuez(R ...
- 个人js类库mycool
// JavaScript Document Sunbye 1.0 //getElementById //function start var $=function(_id){return docum ...
- Java 语言细节
1. if(x = 1) 为什么java不会因为这样的笔误代码犯错? // meant x == 1 因为在C++中,整数0代表布尔值false,非0值相当于布尔值true,在Java中int与布 ...
- Oracle错误 ORA-12560如何解决
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:1.监听服务没有起起来.windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板, 启动oracleh ...
- ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法
ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法 (2010-05-28 12:54:34) http://blog.sina.com.cn/s/blog_67d41beb0100ixn ...
- Storm中Spout使用注意事项小结
Storm中Spout用于读取并向计算拓扑中发送数据源,最近在调试一个topology时遇到了系统qps低,处理速度达不到要求的问题,经过排查后发现是由于对Spout的使用模式不当导致的多线程同步等待 ...
- 20145304 刘钦令 Java程序设计第一周学习总结
20145304<Java程序设计>第1周学习总结 教材学习内容总结 1995年5月23日,是公认的Java的诞生日,Java正式由Oak改名为Java. Java的三大平台是:Java ...
- android 自定义 view 和 ViewGroup
---恢复内容开始--- ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 :决定childView的位置:为什么只是建议的宽和高,而不是直接确定呢,别忘了childVie ...
- Codeforces Round #210 (Div. 2) A. Levko and Table
让对角线的元素为k就行 #include <iostream> using namespace std; int main() { int n,k; cin >> n > ...