网页抓取qq(场景有时候想使用某些网页上的数据,怎么办?)
优采云 发布时间: 2021-12-02 15:13网页抓取qq(场景有时候想使用某些网页上的数据,怎么办?)
1、场景
有时我想使用某些网页上的数据,但这些数据不是通过简单的get/post请求获得的,但是即使没有现成的界面,只要显示在网页上,就可以爬下来使用,就是用代码为我们进行选择→复制→粘贴操作
2、原理
只要加载的网页是html文档,在这个网页上爬取文本数据就可以理解为从一串很长的字符串中截取我们想要的部分。理论上,根据一定的匹配/拦截规则,即使只是使用 if Else 也可以从html文档中得到你想要的数据,因为html本身有一套完整的语法/标签,所以有第三方可以直接根据这些规则使用,快速抓取数据。
3、使用的第三方
Java可以使用Jsoup
swift可以使用ji(注意使用的版本,swift的很多方法名这几年都更新了,老版本的库也有改动)
OC 可以使用一个框架
本文主要记录One框架下载链接的使用,包括demo
手动集成需要在Header Search Paths中添加/usr/include/libxml2、/usr/include/libresolv
4、代码
1、下载网页数据
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:[urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]]];
2、获取网页文档对象
NSError *错误;
ONOXMLDocument *doc=[ONOXMLDocument HTMLDocumentWithData:data error:&error];
3、根据条件查询节点对象
[doc firstChildWithXPath:@"///*[@id='test'] // 获取第一个id为test的节点
[doc firstChildWithXPath:@"///*[.class='test'] // 获取第一个类为 test 的节点
[doc firstChildWithTag:@"span"]// 获取第一个span
4、获取节点对象文本
元素.stringValue