iOS 网易公开课解析示例

使用AFNetWorking请求数据,并用TFHpple进行解析

解析内容:示例解析的是首页中小编推荐标题栏的第一个项

- (void)wangyi {
    // 网易公开课地址
    NSString *str=[NSString stringWithFormat:@"http://open.163.com/"];
    NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];                        // UTF-8
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
    // 请求数据,设置成功与失败的回调函数
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        // 请求下来的整个网页数据
        NSString *html = operation.responseString;
        
        // 网页有gbk编码有utf8编码,全部换成utf8
        NSString *utf8HtmlStr = [html stringByReplacingOccurrencesOfString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=GBK\">" withString:@"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"];
        // TFHpple解析的是data,转换成data
        NSData *htmlDataUTF8 = [utf8HtmlStr dataUsingEncoding:NSUTF8StringEncoding];
    
        // 开始解析
        TFHpple *xpathParser = [[TFHpple alloc] initWithHTMLData:htmlDataUTF8];
        // 查找所有的 <div class="g-cell1"
        // 因为首页的“小编推荐”是使用该class标示的,所以主要获取的是该种形式的小课程节目
        NSArray *elements  = [xpathParser searchWithXPathQuery:@"//div[@class=‘g-cell1‘]"];
        // 不存在则不继续执行
        if ([elements count] <= 0) {
            return;
        }
        
        // 以下只是示例解析第一个课程,循环即可全部解析
        TFHppleElement *first = [elements firstObject];
        // 完整写法
        NSArray *arr = [first searchWithXPathQuery:@"//a[1]/@href"];
        TFHppleElement *ele = [arr firstObject];
        NSLog(@"网址链接:%@",[ele text]);
        // 合并的写法
        NSLog(@"图片链接:%@",[[[first searchWithXPathQuery:@"//img/@src"] firstObject] text]);
        NSLog(@"标题:%@",[[[first searchWithXPathQuery:@"//h5"] firstObject] text]);
        NSLog(@"副标题:%@",[[[first searchWithXPathQuery:@"//p"] firstObject] text]);
        
    }failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"发生错误!%@",error);
    }];
    // 加入队列 开始执行
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    [queue addOperation:operation];
}


打印结果为

2015-07-10 20:53:10.136 wangyi[3735:210800] 网址链接:http://open.163.com/movie/2014/3/I/6/MAQ3UM8TJ_MAQ3V5JI6.html

2015-07-10 20:53:10.137 wangyi[3735:210800] 图片链接:http://imgsize.ph.126.net/?enlarge=true&imgurl=http://img1.cache.netease.com/cnews/2015/6/5/201506050950000106d.jpg_180x100x1x95.jpg

2015-07-10 20:53:10.137 wangyi[3735:210800] 标题:日本爱的产业

2015-07-10 20:53:10.137 wangyi[3735:210800] 副标题:摄制组探访日本红灯区



解析的html源码为

<div class="g-cell1">
						<a href="http://open.163.com/movie/2014/3/I/6/MAQ3UM8TJ_MAQ3V5JI6.html" class="u-cover" target="_blank">
							<div class="shadow rel">
								<img src="http://imgsize.ph.126.net/?enlarge=true&amp;imgurl=http://img1.cache.netease.com/cnews/2015/6/5/201506050950000106d.jpg_180x100x1x95.jpg" alt="日本爱的产业" height="100px" width="180px">
								<div class="mask abs"></div>
							</div>
						</a>
						<a href="http://open.163.com/movie/2014/3/I/6/MAQ3UM8TJ_MAQ3V5JI6.html">
							<h5 class="f-c3">日本爱的产业<span class="rec f-f1 hide"></span></h5>
						</a>
						<p class="f-c9">摄制组探访日本红灯区</p>
					</div>
时间: 2024-10-26 17:24:20

iOS 网易公开课解析示例的相关文章

斯坦福大学 iOS 开发公开课总结

 斯坦福大学 iOS 开发公开课总结 前言 iPhone 开发相关的教程中最有名的,当数斯坦福大学发布的 “iPhone 开发公开课 “ 了.此公开课在以前叫做<iPhone 开发教程>,今年由于平板电脑的流行,所以也加入了 ipad 开发相关的课程.在 网易公开课 上,有 该教程 的 2010 年录象,并且前面 15 集带中文字幕文件,非常适合初学者学习. 在这里顺便说一下,网易公开课上的 28 集其实并不需要全部看完.真正的课程只有前面 12 集.后面的课程都是请一些业界的名人讲他们成功的

浙江理工大学公开课:设计与生活_全6集_网易公开课

浙江理工大学公开课:设计与生活_全6集_网易公开课 中国大学视频公开课  浙江理工大学公开课:设计与生活

用python打造网易公开课视频下载软件

主要分为三部分:1.整体要实现的功能.2.贴出程序源代码及exe程序贴图3.各个资源下载地址 第一.整体要实现的功能 1.根据url地址,获取课程视频地址 2.增加图形化界面 3.将python程序,发布为exe文件,这样大家不安装python就可以运行了 4.由于下载文件名字并不是课程名字,所以下载后要能够实现批量重命名(目前1.0版本未实现) 第二.程序源代码及exe程序贴图 1.程序源代码:down163openv1.0.py 1 #coding:utf-8 2 import urllib

手把手教你用python打造网易公开课视频下载软件1-总述

最近准备重温一下算法导论,感谢大网易把MIT算法导论课程全部贴出来,地址为:http://v.163.com/special/opencourse/algorithms.html 在线看时,网速实在太慢,于是决定下载下来,一个一个的下载不是我等IT男所能忍受的,用迅雷抓取吧,不是特别爽,恰巧前两天刚刚看了下python,于是准备自己写个小软件,练练手,正好可以用这个实际的东西,练练python. 好吧,既然是总述,那么我把接下来要讲的东西的整体轮廓都写在这篇里面,所有需要下载的资源也都会在这里贴

手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理

上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标签,例如<div>hello</,这样的错误,那么怎么处理呢?接着看下面的代码: soup=BeautifulSoup(html) 其中利用模块BeautifulSoap,可能很方便去整理html源文件内容,这里我写了个小例子,大家看一下,代码如下: html='<html>&l

手把手教你用python打造网易公开课视频下载软件4-图形化界面

上一篇讲解完函数:def getdownLoadInfo (url): 传入公开课的url地址,就可以提取课程的信息,这一篇讲解一下如何编写图像化界面.大概思考一下图像化界面需要的内容: (1)一个标签:显示为:"请输入公开课地址" (2)一个文本框:用来输入地址 (3)一个按钮:点击用来提取视频信息 (4)一个标签和多行文本框,其中标签用来显示课程信息,多行文本用来显示下载链接 完成后的效果图如下: 我们先贴出代码: #创建APP app=wx.App(False) #创建frame

网易公开课中英字幕文件合并代码

如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 下载了网易公开课的视频之后,发现它的中文和英文字母是分开的,用其他播放器打开的时候只能载入一个字幕,于是就想合并2个文件 思路: 假定英文字幕的文件名叫1.srt,中文字幕的文件名叫2.srt,新合并的文件名叫3.srt.假设起始行为1. 读取1.srt中的每一行,同步读取2.srt中的每一行,并且将1.srt的数据写入3.srt,当发现行数对4取余的值为3时,将2.srt中读取的数

网易公开课倍速播放

  最近在看网易公开课的视频,无奈的是网易不提供倍速播放.想到html5中video中有playbackRate属性(chrome&&safari),可以以此来实现自定义倍速播放.   注意到网页源代码里有这一段: 网易直接提供了m3u8的地址,利用正则提取出来换上mp4即为视频源地址. 通过设置display为none可以屏蔽原来的flash播放器.  下面只要document.createElement来创建所需的video等再添加进body即可显示HTML5的视频.设置video.p

新浪公开课和网易公开课-开放课件联盟

网易公开课是属于OCWC(Open Course Ware Consortium 开放课件联盟) OCWC是由MIT发起的, 非盈利目的的公益组织, 遵守CC协议. 目的就是为了知识传播, OCWC本身没有商业模式, 也没有这方面的计划. 新浪应该还没有加入OCWC, 是遵守CC协议进行的再次传播.国内公开课的CC协议方面, 使用的是 署名, 相同方式共享, 非商业使用. 对于这类公开课, 大公司本身不求在上面获得直接的经济回报. 一方面确实是功德无量, 加速了知识的传播速度和广度, 另一方面也