万方数据知识平台 TFHpple +Xpath解析[通俗易懂]

万方数据知识平台 TFHpple +Xpath解析

大家好,又见面了,我是全栈君。

试了一下。基本上适合全部的检索结果。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //获取数据
    NSURL *url=[NSURL URLWithString:@"http://s.g.wanfangdata.com.cn/Paper.aspx?q=hiv"];
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
    NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    
    //解析数据
    TFHpple *hpple=[TFHpple hppleWithHTMLData:data];
    
    //XPATH字符串 越短越好。可是要能过滤出符合要求的结果
    //xpath教程:http://www.w3cschool.cn/index-14.html
    NSString *xpathStr =@"//div/ul/li [@class='title_li']   /a [not(@class)]";//解析标题 
    NSString *xpathStr2 =@"//div/ul/li [@class='zi'] ";//解析简单介绍
    NSArray *arr=[hpple searchWithXPathQuery:xpathStr];
    NSArray *arr2=[hpple searchWithXPathQuery:xpathStr2];
    //NSLog(@"%@",arr2);
    //这个数组中就有须要的值
   
    alltilte=[[NSMutableArray alloc]init];
    alltext=[[NSMutableArray alloc]init];
    alltilte = [self SaveArry:arr];
    alltext = [self SaveAlltext:arr2];
   
    for(int i=0;i<alltilte.count;i++)
    {
        NSLog(@"标题%@",alltilte[i]);
        NSLog(@"简单介绍%@",alltext[i]);
    }
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    
}

-(NSMutableArray *)SaveAlltext :(NSArray *)_arry
{
    for (TFHppleElement *tmp in _arry)
    {
        NSString * string =[tmp raw];
        
        NSRange range;
        //        NSRange range2;
        range = [string rangeOfString:@"<br />"];
        string = [string substringToIndex:range.location];
        
        NSString  *temp =[string stringByReplacingOccurrencesOfString:@"<li class=\"zi\">
"
                                                           withString:@""];
        temp =[temp stringByReplacingOccurrencesOfString:@"<font color=\"red\">"
                                              withString:@""];
        temp =[temp stringByReplacingOccurrencesOfString:@"</font>"
                                              withString:@""];
        temp =[temp stringByReplacingOccurrencesOfString:@"<li class=\"zi\">"
                                              withString:@""];
        [alltext addObject:temp];
    }
    return alltext;
}



-(NSMutableArray *)SaveArry: (NSArray *)_arry
{
    
    for (TFHppleElement *tmp in _arry)
    {
        NSString * string =[tmp raw];
        NSRange range;
        NSRange range2;
        range = [string rangeOfString:@"</a>"];
        string = [string substringToIndex:range.location];
        NSString  *temp =[string stringByReplacingOccurrencesOfString:@"<font color=\"red\">" withString:@""];
        temp=[temp stringByReplacingOccurrencesOfString:@"</font>" withString:@""];
        range = [string rangeOfString:@">"];
        range2 = [string rangeOfString:@"img"];
        if(range.length!=0&&range2.length==0)
        {
            string = [temp substringFromIndex:range.location+1];
           [alltilte addObject:string];
        }
        
    }

    
    return alltilte;
}

万方数据知识平台 TFHpple +Xpath解析[通俗易懂]

万方数据知识平台 TFHpple +Xpath解析[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116261.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 来测测你是不是一个合格的前端工程师

    来测测你是不是一个合格的前端工程师

    2021年9月10日
    51
  • Git Flow印象

    Git Flow印象

    2021年8月21日
    70
  • Mybatis的RowBounds分页「建议收藏」

    Mybatis的RowBounds分页「建议收藏」RowBounds分页不再使用SQL实现分页1.接口List<User>getUserByRowBounds();2.mapper.xml<selectid=”getUserByRowBounds”resultMap=”UserMap”> select*frommybatis.user</select>3.测试@TestpublicvoidgetUserByRowBounds(){ SqlSessionsqlSession=

    2022年9月15日
    3
  • springboot上传文件大小配置

    springboot上传文件大小配置springboot上传文件大小配置有两种方法,一种是直接再配置文件配置,一种是通过添加一个Bean来实现。第一种:application.properties中添加spring.http.multipart.maxFileSize=10MB spring.http.multipart.maxRequestSize=10MB其中,   maxFileSize是单个文件大…

    2022年5月10日
    47
  • 决策树原理实例(python代码实现)_决策树实例

    决策树原理实例(python代码实现)_决策树实例决策树算法决策树算法是一种逼近离散函数值的方法。它是一种典型的分类方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。本质上决策树是通过一系列规则对数据进行分类的过程。决策树算法构造决策树来发现数据中蕴涵的分类规则.如何构造精度高、规模小的决策树是决策树算法的核心内容。决策树构造可以分两步进行。第一步,决策树的生成:由训练样本集生成决策树的过程。一般…

    2025年9月1日
    2
  • 解决Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误

    解决Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误今天在电脑上安装了Mysql8.0.11,然后又屁颠屁颠地安装了NavicatforMySQL,打开Navicat准备链接数据库的时候出现了如下提示:上网搜索解决方案,网上说出现这种情况的原因是:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,解决问题方法有两种:方法…

    2022年5月30日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号