梦幻之旅

DEBUG - 天道酬勤

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  671 随笔 :: 6 文章 :: 256 评论 :: 0 Trackbacks
package com.roadway.test;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TeskSRC {
    
public String getHtmlCode(String httpUrl) {
        String htmlCode 
= "";
        
try {
            InputStream in;
            URL url 
= new java.net.URL(httpUrl);
            HttpURLConnection connection 
= (HttpURLConnection) url
                    .openConnection();
            connection 
= (HttpURLConnection) url.openConnection();
            connection.setRequestProperty(
"User-Agent""Mozilla/4.0");
            connection.connect();
            in 
= connection.getInputStream();
            
byte[] buffer = new byte[512];
            
int length = -1;
            
while((length = in.read(buffer,0,512)) != -1){
                htmlCode 
+= new String(buffer,0,length);
            }
        } 
catch (Exception e) {
        }
        
if(htmlCode == null){
            
return "";
        }
        
return htmlCode;
    }
    
public static void main(String[] args){
        TeskSRC ts 
= new TeskSRC();
        String searchImgReg 
= "(?x)(src|SRC|background|BACKGROUND)=('|\")(http://([\\w-]+\\.)+[\\w-]+(:[0-9]+)*(/[\\w-]+)*(/[\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";
        String content = ts.getHtmlCode("http://www.163.com");
        Pattern pattern 
= Pattern.compile(searchImgReg);
        Matcher matcher 
= pattern.matcher(content);
        
while(matcher.find()){
            System.out.println(matcher.group(
3));
        }
        
//searchImgReg  = "(?x)(src|SRC|background|BACKGROUND)=('|\")/?(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('|\")";
    }
}
posted on 2008-04-30 10:58 HUIKK 阅读(3506) 评论(3)  编辑  收藏 所属分类: Regular Exp

评论

# re: 正则表达式 抓取网页面上所有图片 2008-10-24 10:33 HenryFour
这个我以前实现过一个类似功能的, 不过是脚本(windows下用gnu win32)
grep -o "images/.*\.\(\(jpg\)\|\(gif\)\)" a.css | xargs -n1 echo http://www.haoting.com | tr " " "/" > pic.txt
wget -i pic.txt

ps: 用 java 实现时, 如果用多线程能不能提高效率?
我以前写过一个下载一个网站的所有内容(就是给定一个 URI 下的所有子 URI 网页和图片等), 但是用多线程实现时发现在线程稍微多点-比如20个)时就会导致很多网页下载到一般就没了, 很郁闷啊  回复  更多评论
  

# re: 正则表达式 抓取网页面上所有图片[未登录] 2011-10-22 18:43 huang
我爱你,lz,我写了一晚上的正则表达式还没你的好用。  回复  更多评论
  

# re: 正则表达式 抓取网页面上所有图片 2013-11-28 15:07 find you!
赞!!!!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: