`
Luob.
  • 浏览: 1592154 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之 25天 网络爬虫抓取图片(二)

    博客分类:
  • Java
阅读更多
正则表达式练习

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;

public class RegexTest {

	
	public static void main(String[] args) {
		//test();
		ipSort();
	}
	/**
	 * 需求:对邮件地址进行校验
	 */
	public static void checkMail(){
		String mail="asdd@sina.com";
		String regex="\\w{6,12}@[a-zA-Z0-9]+(\\.[a-zA-Z]+){1,3}";  //较为精确的匹配,
		regex="\\w+@\\w+(\\.\\w+)+";  //相对不太精确的匹配  注册后,发送激活邮件
		
		System.out.println(mail.matches(regex));
	}
	
	/**
	 * 需求:
	 * 将虾类字符串转换成, 我要学编程
	 * 到底用四种功能中的那一个呢,或者哪几个呢?
	 * 思路方式:
	 * 1.如果指向知道该字符串是否对是错,使用匹配.
	 * 2.想要将已有的字符串变成另一个字符串,替换
	 * 3.想要安装指定的方式将字符串变成多个字符串,切割. 获取匹配规则以外的子串
	 * 4.想要拿到符合要求的字符串子串, 获取. 获取符合规则的子串.
	 */
	public static void test(){
		String str="我我....我我...我要....要要.....要要...学学学..学学.编程....程程...程";
		
		/**
		 * 将已有字符串变成一个字符串, 使用 替换功能.
		 * 1.可以先去掉 " ."
		 * 2.在将多个充分度的内容变成单个内容.
		 */
		str=str.replaceAll("\\.+", "");
		System.out.println(str);
		
		str=str.replaceAll("(.)\\1+", "$1");
		System.out.println(str);
		
	}
	
	/**
	 * 192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30
	 * 将IP地址进行地址段顺序的排序.
	 * 还按照字符串自然顺序,只要让他们每一段都是3位即可
	 * 1.按照每一段需要的最少多0进行补齐,那么每一段就会至少保证有3位
	 * 2.将每一段只保留3位,这样,所有的Ip地址都是每一段3位.
	 */
	public static void ipSort(){
		String ip="192.68.1.254 102.49.23.013 10.10.10.10 2.2.2.2 8.109.90.30 127.0.0.1";
		ip=ip.replaceAll("(\\d+)", "00$1");
		System.out.println(ip);
		ip=ip.replaceAll("0*(\\d{3})", "$1");
		System.out.println(ip);
		String[] arr=ip.split(" +");
		//方法一
		//Arrays.sort(arr);
		
		//方法二
		TreeSet<String> ts=new TreeSet<String>();
		for(String s:arr){
			ts.add(s);
		}
		for(String s:ts){
			System.out.println(s.replaceAll("0*(\\d+)", "$1"));
			//System.out.println(s.replaceAll("0*([1-9]\\d*)", "$1"));
		}
		
		//方法三
		List<String> list= Arrays.asList(arr);
		for (String s : list) {
			System.out.println(s);
		}
		Collections.sort(list);
	}
	
	
}


网络爬虫:(抓取 莱伊份网站首页的图片,然后下载保存到本地)
抓取本地文件中的所有邮箱


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 网页爬虫(蜘蛛)
 * 爬邮箱
 * 抓取 莱伊份 网站首页 的图片 然后保存的本地 C:\ 
 * 采用多线程进行下载 
 */
class downloadPic implements Runnable{
	private String picpath;
	private String path;
	downloadPic(String picpath,String dir){
		this.picpath=picpath;
		this.path=dir;
	}
	public void run(){
		try {
			URL url=new URL(picpath.replaceAll(" ", "%20"));
			URLConnection conn=url.openConnection();
			 //设置请求的路径  
			//conn.setConnectTimeout(5*1000);  
			int index=picpath.lastIndexOf("/");
			int index1=picpath.lastIndexOf("?");
			index1=index1==-1? picpath.length():index1;
			
			File dir=new File(path);
			if(!dir.exists())
				dir.mkdirs();
		
			String filename=path+picpath.substring(index,index1);
			
			BufferedInputStream bis=new BufferedInputStream(conn.getInputStream());
			
			BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(filename)));
			
			byte[] buf=new byte[1024];
			int len=0;
			while((len=bis.read(buf))!=-1){
				bos.write(buf, 0, len);
				bos.flush();
			}

			bis.close();
			bos.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}

/**
 * 抓取 图片 
 * 抓取 本地文件中 所有 邮箱
 * @author Bin
 *
 */
public class RegexTest2 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//getMails();
		getMails_1();
	}

	public static void cashPicAndMail() throws IOException{
		
		URL url=new URL("http://www.laiyifen.com/");
		
		URLConnection conn= url.openConnection();
		BufferedReader bufr=new BufferedReader(new InputStreamReader(conn.getInputStream(),"utf-8"));
		
		String line=null;
		String mailReg="\\w+@\\w+(\\.\\w+)+";  //抓取网站中的邮箱正则
		mailReg="<img .*? ?src=\"(http:.*?)\".*?( /)?>"; //抓取图片正则
		
		//http://images3.laiyifen.com/laiyifen/2012/10211/10211_01_s.jpg?1332472469#h
		
		//<img src="http://images.laiyifen.com/themes/laiyifen2/images/wl110.jpg">
		//<img border="0" src="http://images.laiyifen.com/themes/laiyifen2/images/tribe_image01.jpg">
		//<img style="width:80px; height:80px;overflow:hidden;" src="http://images4.laiyifen.com/laiyifen/2012/10211/10211_01_s.jpg?1332472469#h" />
		
		Pattern p=Pattern.compile(mailReg);
		
		int count=0;
		String filedir="c:\\laiyifeng\\";
		while((line=bufr.readLine())!=null){
			//System.out.println(line);
			Matcher m=p.matcher(line);
			while(m.find()){
				String picurl=m.group(1);
				new Thread(new downloadPic(picurl,filedir)).start();
				count++;
			}
		}
		System.out.println("总计:"+count);
		
	}
	
	
	
	/**
	 * 获取指定文档中的邮件地址
	 * 使用个获取功能,Pattern  Matcher
	 * @throws IOException 
	 */
	public static void getMails() throws IOException{
		BufferedReader bufr=new BufferedReader(new FileReader("E:\\mail.txt"));
		String line=null;
		String mailReg="\\w+@\\w+(\\.\\w+)+";
		Pattern p=Pattern.compile(mailReg);
		
		while((line=bufr.readLine())!=null){
			Matcher m=p.matcher(line);
			while(m.find()){
				System.out.println(m.group());
			}
		}
	}
}
0
3
分享到:
评论

相关推荐

    java爬虫抓取图片

    Java爬虫技术是一种用于自动化网页数据抓取的编程方法,尤其在处理图片抓取时,它可以帮助我们批量下载网络上的图像资源。对于新手来说,掌握Java爬虫抓取图片的基本步骤和技巧是十分有益的。 首先,我们需要了解...

    java网络爬虫抓取网页数据

    Java网络爬虫是一种自动化程序,用于从互联网上抓取大量数据。它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,...

    Java网络爬虫抓取代理ip

    通过Java网络爬虫爬取指定代理ip网上的ip,利用了jsoup、httpclient技术实现

    java爬虫,抓取网页图片

    对于初学者来说,理解并实现一个简单的Java爬虫能够帮助他们掌握网络数据抓取的基本原理。在这个过程中,主要涉及以下几个核心知识点: 1. **HTTP协议**:Java爬虫首先需要理解HTTP(超文本传输协议),它是互联网...

    java爬虫抓取城市数据

    java爬虫抓取城市数据,数据抓取后直接持久化到数据库当中。博客地址http://blog.csdn.net/qq_23994787/article/details/78107890 如果没有积分的话,在主页给博主发邮件获取。

    Java版网络爬虫,爬取校花网所有美女图片+Swing的贪吃蛇

    在本项目中,我们主要探讨的是使用Java编程语言开发的一款网络爬虫,其目标是爬取特定网站——“校花网”上的所有美女图片。同时,项目还包含了一个基于Swing的简单游戏——贪吃蛇,增加了趣味性。以下是关于Java...

    java爬虫抓取新闻.zip

    Java爬虫技术是一种用于自动化获取网页内容的程序,它能够帮助开发者从互联网上抓取大量信息,例如新闻、数据和图片。在这个“java爬虫抓取新闻.zip”压缩包中,包含了一个名为“爬虫”的可能为源代码的文件以及一个...

    JAVA_采集-爬虫抓取原代码

    在本项目"JAVA_采集-爬虫抓取原代码"中,主要涉及到的是使用Java语言进行网络数据采集,也就是我们常说的网络爬虫技术。Java作为一种广泛应用的编程语言,其强大的面向对象特性和丰富的库资源使得它非常适合开发复杂...

    java网络爬虫模拟登入抓取数据

    Java网络爬虫是一种技术,用于自动化地从互联网上抓取信息。在许多情况下,特别是涉及到登录后才能访问的内容,如人人网这样的社交平台,我们不能简单地通过HTTP请求获取数据,因为这些页面需要用户身份验证。这就...

    java爬虫爬取百度图片

    Java爬虫爬取百度图片是一项常见的网络数据抓取任务,主要涉及到的技术包括网络请求、HTML解析、图片下载等。在本场景中,我们主要探讨如何使用Java语言编写爬虫来实现这一目标。 首先,要爬取百度图片,我们需要...

    (Java毕业设计)Java网络爬虫(蜘蛛)源码-zhizhu.rar

    (Java毕业设计)Java网络爬虫(蜘蛛)(Java毕业设计)Java网络爬虫(蜘蛛)(Java毕业设计)Java网络爬虫(蜘蛛)(Java毕业设计)Java网络爬虫(蜘蛛)(Java毕业设计)Java网络爬虫(蜘蛛)(Java毕业设计)Java网络爬虫(蜘蛛)(Java...

    Java网络爬虫源码.rar

    Java网络爬虫是一种用于自动化地从互联网上抓取大量数据的程序。源码通常是程序员编写的原始代码,它揭示了程序内部的工作原理和实现细节。在这个"Java网络爬虫源码"压缩包中,我们可以期待找到用Java语言编写的网络...

    一个java版本的dht网络爬虫伪装dht节点获取hashinfo

    一个java版本的dht网络爬虫,伪装dht节点获取hashinfo

    Java网络爬虫(蜘蛛)源码.zip

    Java网络爬虫(也称为蜘蛛)是一段用于自动抓取互联网上的数据并进行分析处理的程序代码。这些爬虫通常用于搜索引擎索引、数据挖掘、市场研究或任何需要从大量网页中提取有用信息的场景。 在Java中,编写网络爬虫...

    zhizhu.rar_java 网络爬虫_java爬虫 mysql_数据库 爬虫_爬虫

    Java网络爬虫是利用Java编程语言编写的一种程序,用于自动抓取互联网上的信息。它通过模拟浏览器发送HTTP请求到服务器,接收并解析响应内容,进而获取网页上的数据。 描述中提到,这个网络爬虫源码能够针对指定的...

    用java实现爬虫抓取网页中的表格数据功能源码

    使用java代码基于MyEclipse开发环境实现爬虫抓取网页中的表格数据,将抓取到的数据在控制台打印出来,需要后续处理的话可以在打印的地方对数据进行操作。包解压后导入MyEclipse就可以使用,在TestCrawTable中右键...

    Java网络爬虫蜘蛛源码

    Java网络爬虫,也称为网页抓取或数据挖掘,是一种自动化程序,用于从互联网上抓取大量信息。这种技术在数据分析、市场研究、新闻聚合、搜索引擎优化等领域有着广泛的应用。本资源提供的是Java语言编写的网络爬虫源码...

    Java网络爬虫程序(源程序和数据库文件)

    Java网络爬虫是一种用于自动化获取互联网信息的程序,它能够按照特定规则遍历网页,抓取其中的数据。在这个"Java网络爬虫程序(源程序和数据库文件)"中,我们看到的是一个完整的爬虫项目,它能够从指定的网页抓取`...

    java-网络爬虫.zip

    Java网络爬虫是一种用于自动化网页抓取的程序,它能够按照特定规则遍历互联网上的页面,提取所需数据。本项目提供了用Java实现的网络爬虫示例,特别适合初学者学习。内置的MyEclipse工程使得在开发环境中直接运行和...

    基于JAVA网络爬虫

    Java网络爬虫是一种利用编程语言(在这种情况下是Java)自动抓取互联网信息的程序。它能够遍历网页,提取所需数据,如文本、图片、链接等,广泛应用于数据分析、市场研究、搜索引擎优化等领域。Java作为跨平台的编程...

Global site tag (gtag.js) - Google Analytics