获取网页上数据(图片、文字、视频)-b

Demo地址:http://download.csdn.net/detail/u012881779/8831835

获取网页上所有图片、获取所有html、获取网页title、获取网页内容文字。。。

.h 文件  代码:

//网页  
//NSString *strPath = [NSString stringWithFormat:@"http://www.baidu.com/s?wd=%@&cl=3",theWord];  

//视频  
//NSString *strPath = [NSString stringWithFormat:@"http://www.itinge.com/music/16241.mp4"];  

//图片  
NSString *strPath = [NSString stringWithFormat:@"http://image.baidu.com/search/index?tn=baiduimage&istype=2&ie=utf-8&word=%@",theWord];  

strPath = [strPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

.m 文件  代码:

@interface ViewController ()<UISearchBarDelegate , UIWebViewDelegate,UIGestureRecognizerDelegate>  
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;  
@property (weak, nonatomic) IBOutlet UIWebView *webview;  

@end  

@implementation ViewController  

- (void)viewDidLoad {  
    [super viewDidLoad];  

    _searchBar.delegate = self;  
    _webview.delegate = self;  
    [self addTapOnWebView];  
}  

-(void)addTapOnWebView{  
    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];  
    [_webview addGestureRecognizer:singleTap];  
    singleTap.delegate = self;  
    singleTap.cancelsTouchesInView = NO;  
}  

#pragma mark- TapGestureRecognizer  
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{  
    return YES;  
}  
//被点击位置对应链接  
-(void)handleSingleTap:(UITapGestureRecognizer *)sender{  
    CGPoint pt = [sender locationInView:_webview];  
    NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];  
    NSString *urlToSave = [_webview stringByEvaluatingJavaScriptFromString:imgURL];  
    NSLog(@"image url=%@", urlToSave);  

    NSString * JsToGetHTMLSource = @"top.location.href";  
    NSString * pageSource = [_webview   stringByEvaluatingJavaScriptFromString:JsToGetHTMLSource];  
    NSLog(@"\n\n__url=%@", pageSource);  

    if (urlToSave.length > 4) {  
        NSString *substr = [urlToSave substringFromIndex:urlToSave.length-3];  
        if([substr isEqualToString:@"jpg"] || [substr isEqualToString:@"png"]){  
            [self showImageURL:urlToSave point:pt];  
        }  
    }  
}  

//呈现图片,HTML是否适配分辨率将影响点击资源与获取到得资源是否一致  
-(void)showImageURL:(NSString *)url point:(CGPoint)point  
{  
    UIImageView *showView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen]bounds]];  
    showView.center = point;  
    CGPoint newPoint = self.view.center;  
    showView.center = newPoint;  

    showView.backgroundColor = [UIColor blackColor];  
    showView.alpha = 1;  
    showView.userInteractionEnabled = YES;  
    [self.view addSubview:showView];  
    [showView setContentMode:UIViewContentModeScaleAspectFit];  
    [showView showImageFromURL:url placeHolder:nil CompletionBlock:nil];  

    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleViewTap:)];  
    [showView addGestureRecognizer:singleTap];  

    [self.navigationController setNavigationBarHidden:YES animated:YES];  
}  

//移除图片查看视图  
-(void)handleSingleViewTap:(UITapGestureRecognizer *)sender  
{  
    for (id obj in self.view.subviews) {  
        if ([obj isKindOfClass:[UIImageView class]]) {  
            [obj removeFromSuperview];  
        }  
    }  
    [self.navigationController setNavigationBarHidden:YES animated:YES];  
}  

- (void)didReceiveMemoryWarning {  
    [super didReceiveMemoryWarning];  
    // Dispose of any resources that can be recreated.  
}  

/*
 *JavaScript获取网页信息总结
 获取所有html:NSString *lJs = @"document.documentElement.innerHTML";
 获取网页title:NSString *lJs2 = @"document.title";
 UIWebView *lWebView = [self getCurrentWebView];
 NSString *lHtml1 = [lWebView stringByEvaluatingJavaScriptFromString:lJs];
 NSString *lHtml2 = [lWebView stringByEvaluatingJavaScriptFromString:lJs2]; 

 JavaScript获取网页信息总结
 JavaScript获取当前页面URL、title等 

 thisURL = document.URL;
 thisHREF = document.location.href;
 thisSLoc = self.location.href;
 thisDLoc = document.location;
 thisTLoc = top.location.href;
 thisPLoc = parent.document.location;
 thisTHost = top.location.hostname;
 thisHost = location.hostname;
 thisTitle = document.title;
 thisProtocol = document.location.protocol;
 thisPort = document.location.port;
 thisHash = document.location.hash;
 thisSearch = document.location.search;
 thisPathname = document.location.pathname;
 thisHtml = document.documentElement.innerHTML;
 thisBodyText = document.documentElement.innerText;//获取网页内容文字
 thisBodyText = document.body.innerText;//获取网页内容文字  怎么和上一个一样?有知道的请解释
 */  
//获取  
- (IBAction)receiveAction:(id)sender {  
    /*1视频*/  
    /*
     //获取网页中所有视频
     NSString *getVideoTitle = [_webview getVideoTitle];
     NSLog(@"\n\n 视频名称 : %@",getVideoTitle);
     double getVideoDuration = [_webview getVideoDuration];
     NSLog(@"\n\n 视频总时间 : %f",getVideoDuration);
     double getVideoCurrentTime = [_webview getVideoCurrentTime];
     NSLog(@"\n\n 视频当前时间 : %f",getVideoCurrentTime);
     */  

    /*2网页*/  
    /*
    //获取网页中所有图片
    NSString *imageUrls = [_webview stringByEvaluatingJavaScriptFromString:@"var str=new Array();""$(‘img‘).each(function(){str.push($(this).attr(‘src‘));});"
                           "str.join(‘,‘);"];
    NSLog(@"\n\n 所有图片 : %@",imageUrls); 

    //获取所有html
    NSString *lJs = @"document.documentElement.innerHTML";
    NSString *lHtml1 = [_webview stringByEvaluatingJavaScriptFromString:lJs];
    //NSLog(@"1.%@",lHtml1); 

    //获取网页title:
    NSString *lJs2 = @"document.title";
    NSString *lHtml2 = [_webview stringByEvaluatingJavaScriptFromString:lJs2];
    NSLog(@"2.%@",lHtml2); 

    //thisURL = document.URL
    NSString *lJs3 = @"document.URL";
    NSString *lHtml3 = [_webview stringByEvaluatingJavaScriptFromString:lJs3];
    NSLog(@"3.%@",lHtml3); 

    //获取网页内容文字
    NSString *lJs4 = @"document.documentElement.innerText";
    NSString *lHtml4 = [_webview stringByEvaluatingJavaScriptFromString:lJs4];
    NSLog(@"4.%@",lHtml4); 

    //获取网页内容文字
    NSString *lJs5 = @"document.body.innerText";
    NSString *lHtml5 = [_webview stringByEvaluatingJavaScriptFromString:lJs5];
    NSLog(@"5.%@",lHtml5);
    */  

    /*3图片*/  
    /**/  
    //获取所有html  
    NSString *innerHTML = @"document.documentElement.innerHTML";  
    NSString *innerHTMLString = [_webview stringByEvaluatingJavaScriptFromString:innerHTML];  
    //检索图片  
    if(![innerHTMLString isEqualToString:@"<head></head><body></body>"]){  
        [self searchPictureFromHTML:innerHTMLString];  
    }else{  
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"请先搜索关键字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
        [alert show];  
    }  

}  

//检索图片  
-(void)searchPictureFromHTML:(NSString *)theHTML{  
    //"http://img0.bdstatic.com/img/image/shouye/qwscmeb02.jpg”  
    NSMutableArray *picMutableArr = [[NSMutableArray alloc] init];  
    NSMutableArray *picHttpArr = [[theHTML componentsSeparatedByString:@"http://"] mutableCopy];  

    for (int i = 0; i < picHttpArr.count ; i ++) {  
        NSString *tempStr  = [picHttpArr objectAtIndex:i];  
        NSArray  *tempArr  = [tempStr componentsSeparatedByString:@".jpg"];  
        NSString *firstStr = [tempArr firstObject];  
        //判断字符串是否为图片  
        if([self judgeStringIsPicture:firstStr]){  
            if([self judgeStringIsNull:firstStr]){  
                NSString *picUrl = [NSString stringWithFormat:@"http://%@.jpg",firstStr];  
                [picMutableArr addObject:picUrl];  
            }  
        }else{  
        }  
    }  
    //清除重复图片  
    picMutableArr = [self cleanRepeatPicture:picMutableArr];  

    //展示获取图片  
    PictureViewController *picVc = [[PictureViewController alloc] initWithNibName:@"PictureViewController" bundle:nil];  
    picVc.valueArr = picMutableArr;  
    [self.navigationController pushViewController:picVc animated:YES];  

}  

//判断字符串是否为图片链接  
-(BOOL)judgeStringIsPicture:(NSString *)string{  
    BOOL result = YES;  
    NSMutableArray *mutable = [[NSMutableArray alloc] initWithObjects:@"<",@">",@"{",@"}",@"[",@"]",@"(",@")",@"|",@"||",@"$",@"?",@";", nil nil];  

    if(string != nil && string.length > 0){  
        for (int i = 0; i < string.length; i ++) {  
            NSString *subStr = [string substringWithRange:NSMakeRange(i, 1)];  
            for (int j = 0; j < mutable.count ; j ++) {  
                NSString *markStr = [mutable objectAtIndex:j];  
                if([subStr isEqualToString:markStr]){  
                    result = NO;  
                }  
            }  
        }  
    }  

    return result;  
}  

//清除重复图片  
-(NSMutableArray *)cleanRepeatPicture:(NSMutableArray *)picarr{  
    NSMutableArray *tempArr = [[NSMutableArray alloc] init];  

    for (int i = picarr.count-1 ; i >= 0 ; i --) {  
        NSString *tempStr = [picarr objectAtIndex:i];  
        NSArray *oneArr = [tempStr componentsSeparatedByString:@"&fm"];  
        if(tempArr.count == 0){  
            [tempArr insertObject:tempStr atIndex:0];  
        }else{  
            BOOL result = YES;  
            for (int j = 0 ; j < tempArr.count ; j ++) {  
                NSString *jstr = [tempArr objectAtIndex:j];  
                if([jstr isEqualToString:tempStr]){  
                    result = NO;  
                }else{  
                    if(oneArr.count > 1){  
                        NSArray *twoArr = [jstr componentsSeparatedByString:@"&fm"];  
                        if([[oneArr firstObject] isEqualToString:[twoArr firstObject]]){  
                            result = NO;  
                        }  
                    }  
                }  
            }  
            if(result){  
                [tempArr insertObject:tempStr atIndex:0];  
            }  
        }  
    }  

    return tempArr;  
}  

//HTML  
-(void)detailsWithUrl:(NSString *)urlStr{  
    NSURL *url =[NSURL URLWithString:urlStr];  
    NSURLRequest *request =[NSURLRequest requestWithURL:url];  
    [_webview loadRequest:request];  
    [_webview setScalesPageToFit:YES];  

    //隐藏滚动条  
    _webview.backgroundColor=[UIColor clearColor];  
    _webview.opaque = NO;  
    for (UIView *aView in [_webview subviews]){  
        [aView setBackgroundColor:[UIColor clearColor]];  
        if ([aView isKindOfClass:[UIScrollView class]]){  
            UIScrollView *tempSV = (UIScrollView *)aView;  
            tempSV.tag = 1321;  
            [tempSV setShowsHorizontalScrollIndicator:NO]; //右侧的滚动条 (水平的类似)  
            [tempSV setShowsVerticalScrollIndicator:NO];  
            [tempSV setBounces:NO];  
            [tempSV setContentSize:CGSizeMake(1,tempSV.contentSize.height )];  
            for (UIView *shadowView in tempSV.subviews){  
                if ([shadowView isKindOfClass:[UIImageView class]]){  
                    shadowView.hidden = YES;  //上下滚动出边界时的黑色的图片 也就是拖拽后的上下阴影  
                }  
            }  
        }  
    }  
}  

//判断字符串不全为空  
-(BOOL)judgeStringIsNull:(NSString *)string{  
    BOOL result = NO;  
    if(string != nil && string.length > 0){  
        for (int i = 0; i < string.length; i ++) {  
            NSString *subStr = [string substringWithRange:NSMakeRange(i, 1)];  
            if(![subStr isEqualToString:@" "] && ![subStr isEqualToString:@""]){  
                result = YES;  
            }  
        }  
    }  
    return result;  
}  

#pragma mark UISearchBarDelegate  
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{  
    if([self judgeStringIsNull:searchBar.text]){  
        //搜索接口  
        NSString *urlStr = [NetPortShared baiduSearchDelegate:self andTag:33333 andWord:_searchBar.text];  
        [self detailsWithUrl:urlStr];  
    }else{  
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"请输入关键字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
        [alert show];  
    }  
}  

@end

示意图:

文/作者:枫志应明

c博客地址:http://blog.csdn.net/wsyx768/article/details/46618125

时间: 2024-10-13 01:53:23

获取网页上数据(图片、文字、视频)-b的相关文章

Android获取网页上的图片的代码

public Bitmap getWebBitmap(String imgUrl) { Bitmap bitmap =null; try { InputStream inputStream = null; URL url; url = new URL(imgUrl); if (url != null) { // 打开连接 HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); httpURL

webview 获取网页上的数据

最近做webview,遇到2种需求,一种是在自己服务器上的HTML中获取数据,另一种是通过自己服务器上的HTML中的超链接跳到另一个站点的HTML中,并获取数据. 于是,总结了2种通过webview获取网页上的数据的方式: 第一种:简单点的,直接通过js调java,在调用方法的过程中将数据通过方法的参数传递给Android端,(前提:服务端有对应的faxun对象,而且调用的方法是showImages(String[] imgUrls)). <span style="font-size:18

如何直接获取网页上的数据到工作表

这个网页上的数据不能复制,如何获取网页中的数据到Excel工作表中呢?(常见问题)如何提取网页上的表格数据怎么利用excel获取网上数据如何实时获取网页上的数据信息[资料来源于网络搜索:王西猛讲师的网络课堂][解决方法,wangqiang博客推荐视频教程] wangqiang博客推荐视频教程 原文地址:http://blog.51cto.com/13172026/2289258

网页上播放音频、视频Mp3,Mp4

昨天在处理网页上播放音频mp3,视频mp4上用了一天的时间来比较各种方案,最终还是选择了HTML5的 标签,谷歌浏览器.IE浏览器对标签的支持都很好,火狐上需要安装quicktime插件,效果比较差. <embed type="audio/mpeg" src="demo.mp3" style="width:400px; height:100px; border:3px solid black;" /> <embed src=&q

如何获取网页上的LOGO

一般公司网页上的图片都会禁止右键另存为,用截图工具接下来的图会带背景色,PS成背景透明有点费时间. 用Google Chrome 或Firefox 打开目标网页,右键点击审查元素,将鼠标放在图片上,一般图片都被放在css里,找见图片网址,在浏览器里打开该网址,右键图片,选图片另存为,存下来的LOGO图片无背景色,可直接用.大小不合适可用office picture manager 打开图片,点击Edit picture,点crop切割图片.

Android解析获取网络上的图片(支持bmp格式)

Android学习系列 - 显示网络上的图片(支持bmp格式)) 见如下代码: /** * 到Url地址上去下载图片,并回传Bitmap回來 * * @param imgUrl * @return */ public static Bitmap getBitmapFromUrl(String imgUrl) { URL url; Bitmap bitmap = null; try { url = new URL(imgUrl); InputStream is = url.openConnecti

前端上传数据-图片和视频格式校验

上一篇用 promise 嵌套实现了按 excel 行顺序上传数据,这篇要解决的问题是图片和视频格式校验,图片主要有 jpg png gif 视频 mp4 由于用户选择的资源可能并不是真正的多媒体文件,使用 js 的 file.type 方法获取的文件类型可能不准确,比如将 .xlsx 改为 .jpg, file.type 得到的类型是image/jpeg 客户端拉取资源时,图片和视频的分辨率也一并获取,而上传由前端控制,所以上传时对资源要进行比较准确的判断. 我的判断策略: 判断文件后缀,若不

c++ 实现https网页上的图片爬取

一.主要的原理 我们通过发送一个http请求,获得目标网页的html源代码,然后通过正则表达式获取到图片的URL,把该网页的所有的图片都保存到一个文件夹,这就是整个软件的流程. 二.具体的实践 现在很多的网站都是https协议但是有一部分还是http协议,其实https就是http协议的安全版本,相当于http+ssl,SSL是介于HTTP应用层和TCP传输层,和HTTP相比HTTPS发送数据需要SSL加密,然后发送.所以说我们想通过https协议发送数据给服务器,需要经历一下这几个步骤: 首先

用PHP获取网页上的信息相对于xpath效率低点

用php实现对网页的抓取,及信息的收集,其实就是爬数据,具体实现步骤如下,首先应引入两个文件curl_html_get.php和save_file.php文件,两个文件具体代码是这样的curl_html_get.php内代码为 <?php function curl_get_file_contents($url) { $c = curl_init(); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_URL,