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

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

.h 文件  代码:

  1. //网页  
  2. //NSString *strPath = [NSString stringWithFormat:@"http://www.baidu.com/s?wd=%@&cl=3",theWord];  
  3. //视频  
  4. //NSString *strPath = [NSString stringWithFormat:@"http://www.itinge.com/music/16241.mp4"];  
  5. //图片  
  6. NSString *strPath = [NSString stringWithFormat:@"http://image.baidu.com/search/index?tn=baiduimage&istype=2&ie=utf-8&word=%@",theWord];  
  7. strPath = [strPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

.m 文件  代码:

  1. @interface ViewController ()<UISearchBarDelegate , UIWebViewDelegate,UIGestureRecognizerDelegate>  
  2. @property (weak, nonatomic) IBOutlet UISearchBar *searchBar;  
  3. @property (weak, nonatomic) IBOutlet UIWebView *webview;  
  4. @end  
  5. @implementation ViewController  
  6. - (void)viewDidLoad {  
  7.    [super viewDidLoad];  
  8.    _searchBar.delegate = self;  
  9.    _webview.delegate = self;  
  10.    [self addTapOnWebView];  
  11. }  
  12. -(void)addTapOnWebView{  
  13.    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];  
  14.    [_webview addGestureRecognizer:singleTap];  
  15.    singleTap.delegate = self;  
  16.    singleTap.cancelsTouchesInView = NO;  
  17. }  
  18. #pragma mark- TapGestureRecognizer  
  19. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{  
  20.    return YES;  
  21. }  
  22. //被点击位置对应链接  
  23. -(void)handleSingleTap:(UITapGestureRecognizer *)sender{  
  24.    CGPoint pt = [sender locationInView:_webview];  
  25.    NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", pt.x, pt.y];  
  26.    NSString *urlToSave = [_webview stringByEvaluatingJavaScriptFromString:imgURL];  
  27.    NSLog(@"image url=%@", urlToSave);  
  28.    NSString * JsToGetHTMLSource = @"top.location.href";  
  29.    NSString * pageSource = [_webview   stringByEvaluatingJavaScriptFromString:JsToGetHTMLSource];  
  30.    NSLog(@"\n\n__url=%@", pageSource);  
  31.    if (urlToSave.length > 4) {  
  32.        NSString *substr = [urlToSave substringFromIndex:urlToSave.length-3];  
  33.        if([substr isEqualToString:@"jpg"] || [substr isEqualToString:@"png"]){  
  34.            [self showImageURL:urlToSave point:pt];  
  35.        }  
  36.    }  
  37. }  
  38. //呈现图片,HTML是否适配分辨率将影响点击资源与获取到得资源是否一致  
  39. -(void)showImageURL:(NSString *)url point:(CGPoint)point  
  40. {  
  41.    UIImageView *showView = [[UIImageView alloc] initWithFrame:[[UIScreen mainScreen]bounds]];  
  42.    showView.center = point;  
  43.    CGPoint newPoint = self.view.center;  
  44.    showView.center = newPoint;  
  45.    showView.backgroundColor = [UIColor blackColor];  
  46.    showView.alpha = 1;  
  47.    showView.userInteractionEnabled = YES;  
  48.    [self.view addSubview:showView];  
  49.    [showView setContentMode:UIViewContentModeScaleAspectFit];  
  50.    [showView showImageFromURL:url placeHolder:nil CompletionBlock:nil];  
  51.    UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleViewTap:)];  
  52.    [showView addGestureRecognizer:singleTap];  
  53.    [self.navigationController setNavigationBarHidden:YES animated:YES];  
  54. }  
  55. //移除图片查看视图  
  56. -(void)handleSingleViewTap:(UITapGestureRecognizer *)sender  
  57. {  
  58.    for (id obj in self.view.subviews) {  
  59.        if ([obj isKindOfClass:[UIImageView class]]) {  
  60.            [obj removeFromSuperview];  
  61.        }  
  62.    }  
  63.    [self.navigationController setNavigationBarHidden:YES animated:YES];  
  64. }  
  65. - (void)didReceiveMemoryWarning {  
  66.    [super didReceiveMemoryWarning];  
  67.    // Dispose of any resources that can be recreated.  
  68. }  
  69. /*
  70. *JavaScript获取网页信息总结
  71. 获取所有html:NSString *lJs = @"document.documentElement.innerHTML";
  72. 获取网页title:NSString *lJs2 = @"document.title";
  73. UIWebView *lWebView = [self getCurrentWebView];
  74. NSString *lHtml1 = [lWebView stringByEvaluatingJavaScriptFromString:lJs];
  75. NSString *lHtml2 = [lWebView stringByEvaluatingJavaScriptFromString:lJs2];
  76. JavaScript获取网页信息总结
  77. JavaScript获取当前页面URL、title等
  78. thisURL = document.URL;
  79. thisHREF = document.location.href;
  80. thisSLoc = self.location.href;
  81. thisDLoc = document.location;
  82. thisTLoc = top.location.href;
  83. thisPLoc = parent.document.location;
  84. thisTHost = top.location.hostname;
  85. thisHost = location.hostname;
  86. thisTitle = document.title;
  87. thisProtocol = document.location.protocol;
  88. thisPort = document.location.port;
  89. thisHash = document.location.hash;
  90. thisSearch = document.location.search;
  91. thisPathname = document.location.pathname;
  92. thisHtml = document.documentElement.innerHTML;
  93. thisBodyText = document.documentElement.innerText;//获取网页内容文字
  94. thisBodyText = document.body.innerText;//获取网页内容文字  怎么和上一个一样?有知道的请解释
  95. */  
  96. //获取  
  97. - (IBAction)receiveAction:(id)sender {  
  98.    /*1视频*/  
  99.    /*
  100.     //获取网页中所有视频
  101.     NSString *getVideoTitle = [_webview getVideoTitle];
  102.     NSLog(@"\n\n 视频名称 : %@",getVideoTitle);
  103.     double getVideoDuration = [_webview getVideoDuration];
  104.     NSLog(@"\n\n 视频总时间 : %f",getVideoDuration);
  105.     double getVideoCurrentTime = [_webview getVideoCurrentTime];
  106.     NSLog(@"\n\n 视频当前时间 : %f",getVideoCurrentTime);
  107.     */  
  108.    /*2网页*/  
  109.    /*
  110.    //获取网页中所有图片
  111.    NSString *imageUrls = [_webview stringByEvaluatingJavaScriptFromString:@"var str=new Array();""$('img').each(function(){str.push($(this).attr('src'));});"
  112.                           "str.join(',');"];
  113.    NSLog(@"\n\n 所有图片 : %@",imageUrls);
  114.    //获取所有html
  115.    NSString *lJs = @"document.documentElement.innerHTML";
  116.    NSString *lHtml1 = [_webview stringByEvaluatingJavaScriptFromString:lJs];
  117.    //NSLog(@"1.%@",lHtml1);
  118.    //获取网页title:
  119.    NSString *lJs2 = @"document.title";
  120.    NSString *lHtml2 = [_webview stringByEvaluatingJavaScriptFromString:lJs2];
  121.    NSLog(@"2.%@",lHtml2);
  122.    //thisURL = document.URL
  123.    NSString *lJs3 = @"document.URL";
  124.    NSString *lHtml3 = [_webview stringByEvaluatingJavaScriptFromString:lJs3];
  125.    NSLog(@"3.%@",lHtml3);
  126.    //获取网页内容文字
  127.    NSString *lJs4 = @"document.documentElement.innerText";
  128.    NSString *lHtml4 = [_webview stringByEvaluatingJavaScriptFromString:lJs4];
  129.    NSLog(@"4.%@",lHtml4);
  130.    //获取网页内容文字
  131.    NSString *lJs5 = @"document.body.innerText";
  132.    NSString *lHtml5 = [_webview stringByEvaluatingJavaScriptFromString:lJs5];
  133.    NSLog(@"5.%@",lHtml5);
  134.    */  
  135.    /*3图片*/  
  136.    /**/  
  137.    //获取所有html  
  138.    NSString *innerHTML = @"document.documentElement.innerHTML";  
  139.    NSString *innerHTMLString = [_webview stringByEvaluatingJavaScriptFromString:innerHTML];  
  140.    //检索图片  
  141.    if(![innerHTMLString isEqualToString:@"<head></head><body></body>"]){  
  142.        [self searchPictureFromHTML:innerHTMLString];  
  143.    }else{  
  144.        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"请先搜索关键字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
  145.        [alert show];  
  146.    }  
  147. }  
  148. //检索图片  
  149. -(void)searchPictureFromHTML:(NSString *)theHTML{  
  150.    //"http://img0.bdstatic.com/img/image/shouye/qwscmeb02.jpg”  
  151.    NSMutableArray *picMutableArr = [[NSMutableArray alloc] init];  
  152.    NSMutableArray *picHttpArr = [[theHTML componentsSeparatedByString:@"http://"] mutableCopy];  
  153.    for (int i = 0; i < picHttpArr.count ; i ++) {  
  154.        NSString *tempStr  = [picHttpArr objectAtIndex:i];  
  155.        NSArray  *tempArr  = [tempStr componentsSeparatedByString:@".jpg"];  
  156.        NSString *firstStr = [tempArr firstObject];  
  157.        //判断字符串是否为图片  
  158.        if([self judgeStringIsPicture:firstStr]){  
  159.            if([self judgeStringIsNull:firstStr]){  
  160.                NSString *picUrl = [NSString stringWithFormat:@"http://%@.jpg",firstStr];  
  161.                [picMutableArr addObject:picUrl];  
  162.            }  
  163.        }else{  
  164.        }  
  165.    }  
  166.    //清除重复图片  
  167.    picMutableArr = [self cleanRepeatPicture:picMutableArr];  
  168.    //展示获取图片  
  169.    PictureViewController *picVc = [[PictureViewController alloc] initWithNibName:@"PictureViewController" bundle:nil];  
  170.    picVc.valueArr = picMutableArr;  
  171.    [self.navigationController pushViewController:picVc animated:YES];  
  172. }  
  173. //判断字符串是否为图片链接  
  174. -(BOOL)judgeStringIsPicture:(NSString *)string{  
  175.    BOOL result = YES;  
  176.    NSMutableArray *mutable = [[NSMutableArray alloc] initWithObjects:@"<",@">",@"{",@"}",@"[",@"]",@"(",@")",@"|",@"||",@"$",@"?",@";", nil nil];  
  177.    if(string != nil && string.length > 0){  
  178.        for (int i = 0; i < string.length; i ++) {  
  179.            NSString *subStr = [string substringWithRange:NSMakeRange(i, 1)];  
  180.            for (int j = 0; j < mutable.count ; j ++) {  
  181.                NSString *markStr = [mutable objectAtIndex:j];  
  182.                if([subStr isEqualToString:markStr]){  
  183.                    result = NO;  
  184.                }  
  185.            }  
  186.        }  
  187.    }  
  188.    return result;  
  189. }  
  190. //清除重复图片  
  191. -(NSMutableArray *)cleanRepeatPicture:(NSMutableArray *)picarr{  
  192.    NSMutableArray *tempArr = [[NSMutableArray alloc] init];  
  193.    for (int i = picarr.count-1 ; i >= 0 ; i --) {  
  194.        NSString *tempStr = [picarr objectAtIndex:i];  
  195.        NSArray *oneArr = [tempStr componentsSeparatedByString:@"&fm"];  
  196.        if(tempArr.count == 0){  
  197.            [tempArr insertObject:tempStr atIndex:0];  
  198.        }else{  
  199.            BOOL result = YES;  
  200.            for (int j = 0 ; j < tempArr.count ; j ++) {  
  201.                NSString *jstr = [tempArr objectAtIndex:j];  
  202.                if([jstr isEqualToString:tempStr]){  
  203.                    result = NO;  
  204.                }else{  
  205.                    if(oneArr.count > 1){  
  206.                        NSArray *twoArr = [jstr componentsSeparatedByString:@"&fm"];  
  207.                        if([[oneArr firstObject] isEqualToString:[twoArr firstObject]]){  
  208.                            result = NO;  
  209.                        }  
  210.                    }  
  211.                }  
  212.            }  
  213.            if(result){  
  214.                [tempArr insertObject:tempStr atIndex:0];  
  215.            }  
  216.        }  
  217.    }  
  218.    return tempArr;  
  219. }  
  220. //HTML  
  221. -(void)detailsWithUrl:(NSString *)urlStr{  
  222.    NSURL *url =[NSURL URLWithString:urlStr];  
  223.    NSURLRequest *request =[NSURLRequest requestWithURL:url];  
  224.    [_webview loadRequest:request];  
  225.    [_webview setScalesPageToFit:YES];  
  226.    //隐藏滚动条  
  227.    _webview.backgroundColor=[UIColor clearColor];  
  228.    _webview.opaque = NO;  
  229.    for (UIView *aView in [_webview subviews]){  
  230.        [aView setBackgroundColor:[UIColor clearColor]];  
  231.        if ([aView isKindOfClass:[UIScrollView class]]){  
  232.            UIScrollView *tempSV = (UIScrollView *)aView;  
  233.            tempSV.tag = 1321;  
  234.            [tempSV setShowsHorizontalScrollIndicator:NO]; //右侧的滚动条 (水平的类似)  
  235.            [tempSV setShowsVerticalScrollIndicator:NO];  
  236.            [tempSV setBounces:NO];  
  237.            [tempSV setContentSize:CGSizeMake(1,tempSV.contentSize.height )];  
  238.            for (UIView *shadowView in tempSV.subviews){  
  239.                if ([shadowView isKindOfClass:[UIImageView class]]){  
  240.                    shadowView.hidden = YES;  //上下滚动出边界时的黑色的图片 也就是拖拽后的上下阴影  
  241.                }  
  242.            }  
  243.        }  
  244.    }  
  245. }  
  246. //判断字符串不全为空  
  247. -(BOOL)judgeStringIsNull:(NSString *)string{  
  248.    BOOL result = NO;  
  249.    if(string != nil && string.length > 0){  
  250.        for (int i = 0; i < string.length; i ++) {  
  251.            NSString *subStr = [string substringWithRange:NSMakeRange(i, 1)];  
  252.            if(![subStr isEqualToString:@" "] && ![subStr isEqualToString:@""]){  
  253.                result = YES;  
  254.            }  
  255.        }  
  256.    }  
  257.    return result;  
  258. }  
  259. #pragma mark UISearchBarDelegate  
  260. - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{  
  261.    if([self judgeStringIsNull:searchBar.text]){  
  262.        //搜索接口  
  263.        NSString *urlStr = [NetPortShared baiduSearchDelegate:self andTag:33333 andWord:_searchBar.text];  
  264.        [self detailsWithUrl:urlStr];  
  265.    }else{  
  266.        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"请输入关键字" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil nil];  
  267.        [alert show];  
  268.    }  
  269. }  
  270. @end

示意图:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJDQzA1MTVGNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJDQzA1MTYwNkE2MjExRTRBRjEzODVCM0Q0NEVFMjFBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkNDMDUxNUQ2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkNDMDUxNUU2QTYyMTFFNEFGMTM4NUIzRDQ0RUUyMUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6p+a6fAAAAD0lEQVR42mJ89/Y1QIABAAWXAsgVS/hWAAAAAElFTkSuQmCC" alt="" data-w="640" data-ratio="1.775" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz_png/g4uoJOMA38Lib8VMmfWNTzVHSJ9ibvJrEEiasibKYtG1EgbIr4s5J7QzTEk7VH1vf2f0aQAB6MY5hcHnTHcGFibWnvA/0?wx_fmt=png" />

文/作者:枫志应明

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

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

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

    public Bitmap getWebBitmap(String imgUrl) { Bitmap bitmap =null; try { InputStream inputStream = nul ...

  2. (java)Jsoup爬虫学习--获取网页所有的图片,链接和其他信息,并检查url和文本信息

    Jsoup爬虫学习--获取网页所有的图片,链接和其他信息,并检查url和文本信息 此例将页面图片和url全部输出,重点不太明确,可根据自己的需要输出和截取: import org.jsoup.Jsou ...

  3. 如何获取网页上的LOGO

    一般公司网页上的图片都会禁止右键另存为,用截图工具接下来的图会带背景色,PS成背景透明有点费时间. 用Google Chrome 或Firefox 打开目标网页,右键点击审查元素,将鼠标放在图片上,一 ...

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

    昨天在处理网页上播放音频mp3,视频mp4上用了一天的时间来比较各种方案,最终还是选择了HTML5的 标签,谷歌浏览器.IE浏览器对标签的支持都很好,火狐上需要安装quicktime插件,效果比较差. ...

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

    一.主要的原理 我们通过发送一个http请求,获得目标网页的html源代码,然后通过正则表达式获取到图片的URL,把该网页的所有的图片都保存到一个文件夹,这就是整个软件的流程. 二.具体的实践 现在很 ...

  6. 不需要爬虫也能轻松获取 unsplash 上的图片

    我经常会使用 unsplash, 这里面的图片非常清爽,我的大多数文章的图片都是在这个网上找的,虽然也有同类型网站,但是用过一段时间以后基本都放弃了,图片质量参差不齐,筛选过程太费劲. 但是 unsp ...

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

    用php实现对网页的抓取,及信息的收集,其实就是爬数据,具体实现步骤如下,首先应引入两个文件curl_html_get.php和save_file.php文件,两个文件具体代码是这样的curl_htm ...

  8. Android获取ImageView上的图片,和一个有可能遇到的问题!

    1.在获取图片前先调用setDrawingCacheEnabled(true)这个方法: 举例:mImageView.setDrawingCacheEnabled(true); 2.之后可以通过get ...

  9. [BUG]Dreamweaver6做网页的一个图片文字不清晰的问题

    自己用Dreamweaver6做一个网页,使用PS做图片,为了节约下载流量,我把图片裁剪为GIF格式,通过系统自带的图片浏览器和美图看看,图片上的文字都是清晰的. 我把图片加载进入DW中后,在DW界面 ...

随机推荐

  1. 【阔别许久的博】【我要开始攻数学和几何啦】【高精度取模+同余模定理,*】POJ 2365 The Embarrassed Cryptographer

    题意:给出一大数K(4 <= K <= 10^100)与一整数L(2 <= L <= 106),K为两个素数的乘积(The cryptographic keys are cre ...

  2. Web系统大规模并发----电商秒杀与抢购

    原文链接请参见:http://uule.iteye.com/blog/2186786

  3. 多tab页框架的使用场合

    多tab页框架适合应用于功能较少的场合,例如邮箱后台之类的. 对于一些业务功能多且复杂的场合就不适用.打开过多的tab页容易给用户造成混乱,页面的跳转也存在一定的难度. 一种新技术不能完全取代旧技术, ...

  4. 核心概念 —— 服务提供者

    1.简介 服务提供者是Laravel应用启动的中心,你自己的应用以及所有Laravel的核心服务都是通过服务提供者启动. 但是,我们所谓的"启动"指的是什么?通常,这意味着注册事物 ...

  5. 今天用css做了一个QQ登录页面

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 备忘====[HttpPost]和[AcceptVerbs(HttpVerbs.Post)]区别

    1.共同点:[HttpPost]和[AcceptVerbs(HttpVerbs.Post)]都是只接受POST请求过来的数据. 2.不同点:在MVC中如果想一个action既可以回应POST请求也可以 ...

  7. tinyMCE自定义添加图片插件

    需求: 在富文本编辑器中插入图片,图片来自用户可以自己上传的图片库. 本来可以用比较恶心的方式,也就是直接用tinyMCE自带的插入图片插件来实现.恶心是因为这个图片插件需要用户填入图片的url. 想 ...

  8. android xml的生成与解析

    Main java package com.itheima.xml; import android.app.Activity; import android.content.Context; impo ...

  9. Libcurl笔记一

    一:1,全局初始化及释放:CURLcode curl_global_init(long flags) flags: CURL_GLOBAL_ALL //初始化所有的可能的调用. CURL_GLOBAL ...

  10. [转]重叠IO

    本章回答了如下几个问题: ◆ 什么是Overlapped I/O?为什么需要Overlapped I/O?如何让数据传输支持Overlapped I/O? ◆ 数据传输结束后,Win32提供了哪些方式 ...