Java爬虫
作为一位Java爬虫的初学者,分享一下自己的心得。
所用到的jar包
个人认为爬虫的实现机制:
获取Docume对象—>获取节点—>输出或者持久化
获取页面的图片地址
获取Docume对象—>获取Img元素—>输出地址
- package com.cn.basic;
- import java.io.IOException;
- import org.jsoup.Jsoup;
- import org.jsoup.nodes.Document;
- import org.jsoup.nodes.Element;
- import org.jsoup.select.Elements;
- public class ImageDemo1 {
- public static void Get_Url(String htmlUrl, String path) {
- try {
- Document doc = Jsoup.connect(htmlUrl).get();
- Element body = doc.body();
- Elements elements = body.select("img");
- String src = "";
- for (Element element : elements) {
- src = element.attr("src");
- System.out.println(path + src);
- }
- System.out.println("elements-size: " + elements.size());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- String url = "http://pic.netbian.com/4kkatongdongman/index_2.html";
- String path = "http://pic.netbian.com";
- Get_Url(url, path);
- }
- }
将图片写入本地
获取Docume对象—>获取Img元素—>将图片保存本地
- package com.cn.basic;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.Date;
- import org.jsoup.Jsoup;
- import org.jsoup.nodes.Document;
- import org.jsoup.nodes.Element;
- import org.jsoup.select.Elements;
- public class ImageDemo2 {
- public static void saveImage(String htmlUrl, String path) {
- try {
- Document doc = Jsoup.connect(htmlUrl).get();
- Element body = doc.body();
- Elements elements = body.select("img");
- String outputFilePath="E:/pythonTest/javaPython/imgs/";
- String src = "";
- HttpURLConnection conn = null;
- InputStream inStream = null;
- byte[] data = null;
- String filePath = null;
- FileOutputStream outStream = null;
- Long startTime=new Date().getTime();
- for (Element element : elements) {
- src = element.attr("src");
- System.out.println(path + src);
- // new一个URL对象
- if (!src.contains(".jpg")) {
- continue;
- }
- URL url = new URL(path + src);
- // 打开链接
- conn = (HttpURLConnection) url.openConnection();
- // 设置请求方式为"GET"
- conn.setRequestMethod("GET");
- // 超时响应时间为5秒
- conn.setConnectTimeout(5 * 1000);
- // 通过输入流获取图片数据
- inStream = conn.getInputStream();
- // 得到图片的二进制数据,以二进制封装得到数据,具有通用性
- data = readInputStream(inStream);
- // new一个文件对象用来保存图片,默认保存当前工程根目录
- filePath = outputFilePath + System.currentTimeMillis() + ".jpg";
- // 创建输出流
- outStream = new FileOutputStream(new File(filePath));
- // 写入数据
- outStream.write(data);
- // 关闭输出流
- outStream.close();
- }
- System.out.println(elements.size());
- System.out.println("读写速度:"+(new Date().getTime()-startTime)+"毫秒");
- } catch (IOException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static byte[] readInputStream(InputStream inStream) throws Exception {
- ByteArrayOutputStream outStream = new ByteArrayOutputStream();
- // 创建一个Buffer字符串
- byte[] buffer = new byte[1024];
- // 每次读取的字符串长度,如果为-1,代表全部读取完毕
- int len = 0;
- // 使用一个输入流从buffer里把数据读取出来
- while ((len = inStream.read(buffer)) != -1) {
- // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
- outStream.write(buffer, 0, len);
- }
- // 关闭输入流
- inStream.close();
- // 把outStream里的数据写入内存
- return outStream.toByteArray();
- }
- public static void main(String[] args) {
- String url = "http://pic.netbian.com/4kkatongdongman/index_2.html";
- String path = "http://pic.netbian.com";
- saveImage(url, path);
- }
- }
Java爬虫的更多相关文章
- webmagic的设计机制及原理-如何开发一个Java爬虫
之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...
- JAVA爬虫挖取CSDN博客文章
开门见山,看看这个教程的主要任务,就去csdn博客,挖取技术文章,我以<第一行代码–安卓>的作者为例,将他在csdn发表的额博客信息都挖取出来.因为郭神是我在大学期间比较崇拜的对象之一.他 ...
- 爬虫6:多页面增量Java爬虫-sina主页
之前写过很多单页面python爬虫,感觉python还是很好用的,这里用java总结一个多页面的爬虫,迭代爬取种子页面的所有链接的页面,全部保存在tmp路径下. 1 序言 实现这个爬虫需要两个数据结构 ...
- 推荐几个优秀的java爬虫项目
java爬虫项目 大型的: Nutch apache/nutch · GitHub 适合做搜索引擎,分布式爬虫是其中一个功能. Heritrix internetarchive/heritrix3 ...
- Java爬虫搜索原理实现
permike 原文 Java爬虫搜索原理实现 没事做,又研究了一下爬虫搜索,两三天时间总算是把原理闹的差不多了,基本实现了爬虫搜索的原理,本次实现还是俩程序,分别是按广度优先和深度优先完成的,广度优 ...
- JAVA爬虫 WebCollector
JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫. 爬虫 ...
- 爬虫入门 手写一个Java爬虫
本文内容 涞源于 罗刚 老师的 书籍 << 自己动手写网络爬虫一书 >> ; 本文将介绍 1: 网络爬虫的是做什么的? 2: 手动写一个简单的网络爬虫; 1: 网络爬虫是做 ...
- JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)
WebMagic WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 采用HttpClient可以实现定向的爬虫,也可以自己编写算法逻辑来 ...
- MinerUtil.java 爬虫工具类
MinerUtil.java 爬虫工具类 package com.iteye.injavawetrust.miner; import java.io.File; import java.io.File ...
随机推荐
- MVC 常用扩展点:过滤器、模型绑定等
MVC 常用扩展点:过滤器.模型绑定等 一.过滤器(Filter) ASP.NET MVC中的每一个请求,都会分配给对应Controller(以下简称"控制器")下的特定Actio ...
- 【Socket编程】Java通信是这样炼成的
简介 网络无处不在,移动互联时代也早已到来,单机版程序慢慢的已没有生命力,所有的程序都要能够访问网络,比如 QQ 网络聊天程序.迅雷下载程序等,这些程序都要同网络打交道,本次将与各位小伙伴们分享的就是 ...
- js Web存储方式
JSON是数据交互中最常用的一种数据格式. 由于各种语言的语法都不同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串> 传递之后,可以讲JSON字符串,在解析为JSON对象. ...
- 将home多余的空间分配到"/"分区下
一.操作过程 1.df -h 查看分区大小情况; [root@localhost /]# df -h Filesystem Size Used Avail Use% Mount ...
- 201521123024《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 注意conve ...
- 201521123038 《Java程序设计》 第七周学习总结
201521123038 <Java程序设计> 第七周学习总结 1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 ...
- 201521123023《Java程序设计》第13周学习总结
1. 本周学习总结 (1)网络中为了进行数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则)称之为协议(常用http/ftp) (2)大致熟悉了TCP协议,但是UDP怎么辣么蓝,好理解却用不 ...
- java从控制台接收一个数字
//时间:2017/7/22//作者:江骆//功能:从控制台接收一个数import java.io.*; //引入一个IO流的包public class helloworld1{ public ...
- Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率
Jacoco远程统计tomcat服务(Windows系统)的代码覆盖率 2017-09-21 目录 1 Jacoco的安装和设置 1.1 什么是Jacoco? 1.2 Jacoco安装 1.3 ...
- 双击打开Jar文件
最近发现个诡异的问题,java环境变量明明配好了.但是双击xx.jar文件,就是不能直接打开运行. 先想到了第一个解决办法: 运行cmd.exe,cd到jar目录,执行 javaw -jar xxx. ...