博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用oc写爬虫之HTMLParser
阅读量:7086 次
发布时间:2019-06-28

本文共 2103 字,大约阅读时间需要 7 分钟。

最近刚好有一些小需求,就尝试用OC来写一些简单的爬虫抓取网页上的数据;

发现了一个非常好用的HTMLParser工具 ;

语法是OC的,通过分析网页结构:可以很轻松的抓取需要的数据;

但是提前需要了解html标记语言,了解网页结构,需要分析网页源码,标签结构。

这里只是抛砖引玉,提供一个思路,有心的人会有意不到的收获!

使用的类库是:

1. 如下示例,解析一个列表里面的所有 a 连接

//解析一个列表的页面URL+ (NSArray *)parseOneListUrl:(NSString *)listUrl{    NSURL *aurl = [NSURL URLWithString:listUrl];        NSError *per;    HTMLParser *ps = [[HTMLParser alloc]initWithContentsOfURL:aurl error:&per];    if (per) {        NSLog(@"%@",per);        return nil;    }        HTMLNode *bodyNode = [ps body];    HTMLNode *fnode = [bodyNode findChildWithAttribute:@"class" matchingName:@"movieList" allowPartial:YES];    NSMutableArray *pgArr = [NSMutableArray arrayWithCapacity:1];    NSArray *pgliArr = [fnode findChildTags:@"li"];    for (HTMLNode *linode in pgliArr) {        NSString *pgurl = [[linode findChildTag:@"a"] getAttributeNamed:@"href"];        [pgArr addObject:[NSString stringWithFormat:@"%@%@",SITE_DOMAIN,pgurl]];    }            return [NSArray arrayWithArray:pgArr];    }

 首先是加载网页数据;

 然后分析网页中有个class="movieList" 的div,这里面就是我们要的 a 连接数据

 然后 解析这里面的所有 li 标签;

 然后解析里面所有的 a 标签;

 最后获取 a 标签里面 herf 中的url,这里就是我们要的数据;

 

2. 再来一个示例,下载一个页面里面指定的所有图片

//解析一个页面的所有图片URL+ (NSArray *)parseOnePageIMGUrl:(NSString *)pageUrl{    NSURL *aurl = [NSURL URLWithString:pageUrl];        NSError *per;    HTMLParser *ps = [[HTMLParser alloc]initWithContentsOfURL:aurl error:&per];    if (per) {        NSLog(@"%@",per);        return nil;    }        HTMLNode *bodyNode = [ps body];    HTMLNode *fnode = [bodyNode findChildWithAttribute:@"class" matchingName:@"picContent" allowPartial:YES];        NSMutableArray *imgUrlArr = [NSMutableArray arrayWithCapacity:1];    NSArray *imgNDArr = [fnode findChildTags:@"img"];    for (HTMLNode *imgNode in imgNDArr) {        [imgUrlArr addObject:[imgNode getAttributeNamed:@"src"]];    }        return [NSArray arrayWithArray:imgUrlArr];}

 如上先加载网页数据

 然后通过分析网页,发现 class="picContent" 的div 里面是我们需要的所有照片区域;

 然后解析div 里面所有的 img标签;

 然后解析 img 标签里面的 src 就是图片的下载连接;

 最后我们把下载连接放到迅雷,就可以批量下载了;

 

3. HTMLParser https://github.com/volodg/HTMLParser

转载于:https://www.cnblogs.com/cocoajin/p/6922876.html

你可能感兴趣的文章
tar工具的使用
查看>>
用c语言实现括号匹配算法
查看>>
MYSQL数据备份
查看>>
我的友情链接
查看>>
CSS3 选择器——伪类选择器
查看>>
spring的annotation-driven
查看>>
搭建Nginx+PHP环境
查看>>
Centos7下删除virbr0网卡信息
查看>>
利用UltraISO制作RedhatU盘启动盘
查看>>
[C#] Socket 一 Server 多Client 端 聊天
查看>>
sqlplus /nolog 是什么意思
查看>>
MongDB_插入详解
查看>>
Android休眠问题探讨(1)
查看>>
CentOS7.1-Open***
查看>>
由 Javascript 函数字面量演绎知识函数
查看>>
php常用的类函数和对象函数
查看>>
浅谈浙江ERP管理软件实施原则与方法
查看>>
在JSF2中使用编辑器ck-jsf-editor
查看>>
linux的主机IP配置
查看>>
系统启动流程
查看>>