通过Java进行网页抓取并生成plist创建代码
抓取网页的方法:
抓取网页可以通过正则表达式也可以通过Java。
通过firefox浏览器,安装Firebug来查看网页的源代码。
首先将要抓取的部分保存到本地,步骤如下:
1.在要抓取的位置右键,选择使用Firebug查看元素
2.鼠标悬停在特定元素上面时,元素会高亮,找到整个表格数据的标签,右键选择复制HTML,然后新建一个html文件粘贴进去,为了防止乱码,应当把网页的head也保存下来。
网页本地化完成后,用eclipse新建一个Java工程,导入jsoup.jar库,
右键如下图操作,变成“奶瓶”表示可用:
利用jSoup包抓取网页的方法:
已知网页的内部结构为:
<li><a href="http://xxx"><img src="http://xxx.jpg"><p>xxx</p></a></li>
其中要抓取的部分为名称<p>标签和图片<img>标签的src属性。Elements为元素数组,得到的是多条li数据,Element为从li中获取的元素,抓取标签内属性使用attr方法,直接抓取文字使用text方法。
<span style="white-space:pre"> </span>//文件路径
String url = "/Users/soulghost/Desktop/WebCatch.html"; try{
//加载网页
Document doc = Jsoup.parse(new File(url), "UTF-8"); //抓去特定标签的元素
Elements lis = doc.select("li"); //遍历所有元素
for(int i = 0; i < lis.size(); i++){
Element li = lis.get(i);
Element img = li.select("img").get(0);
String imgName = img.attr("src");
Element p = li.select("p").get(0);
String heroName = p.text();
} }catch (Exception e){ }
生成plist的方法:先新建字典,然后加入NSArray,最后将数组使用writeToFile直接生称为xxx.plist即可。
例如:
NSDictionary *dict1 = @{@"name":@"abc",@"icon":@"abc.png"};
NSDictionary *dict2 = @{@"name":@"efg",@"icon":@"efg.png"};
NSDictionary *dict3 = @{@"name":@"hij",@"icon":@"hij.png"}; NSArray *apps = @[dict1, dict2, dict3]; [apps writeToFile:@"/Users/soulghost/Desktop/heros.plist" atomically:YES];
因此应该在Java中打印这样的代码,然后拷贝到Xcode中运行来生成plist。
注意特殊字符,例如""使用反斜杠来转义(\“)来转义。
Tip:不要忘了array的新建用 @[ ],字典用@{ }。
使用Xcode下载src中的图片:
网络数据通过二进制方式传播,使用NSData类来获取特定URL的数据:
注意一个细节,使用string的lastPathComponent方法可以获取路径中最后的文件名部分。
另一个细节,因为icon键内存放的是url,应该转化为图标名称filename,注意新建可变数组marray和可变字典来修改数据,然后生成新的数组。
NSMutableArray *marray = [NSMutableArray array];
for (NSDictionary *hero in array) {
NSString *iconURL = hero[@"icon"];
NSURL *url = [NSURL URLWithString:iconURL];
NSData *data = [NSData dataWithContentsOfURL:url]; NSString *filename = [iconURL lastPathComponent]; NSString *path = [NSString stringWithFormat:@"/xxx/%@",filename]; [data writeToFile:path atomically:YES]; NSMutableDictionary *newDict = [NSMutableDictionary dictionary];
newDict[@"name"] = hero[@"name"];
newDict[@"icon"] = filename;
[marray addObject:newDict];
}
通过Java进行网页抓取并生成plist创建代码的更多相关文章
- Java实现网页抓取的一个Demo
这个小案例的话我是存放在我的github 上. 下面给出链接自己可以去看下,也可以直接下载源码.有具体的说明 <Java网页抓取>
- Java开源网页抓取工具httpClient以及jsoup
网上看到不错的Java网页抓取工具和库 先记录一下 使用java开源工具httpClient及jsoup抓取解析网页数据
- java抓取动态生成的网页
最近在做项目的时候有一个需求:从网页面抓取数据,要求是首先抓取整个网页的html源码(后期更新要使用到).刚开始一看这个简单,然后就稀里哗啦的敲起了代码(在这之前使用过Hadoop平台的分布式爬虫框架 ...
- java网页抓取
网页抓取就是,我们想要从别人的网站上得到我们想要的,也算是窃取了,有的网站就对这个网页抓取就做了限制,比如百度 直接进入正题 //要抓取的网页地址 String urlStr = "http ...
- 基于Casperjs的网页抓取技术【抓取豆瓣信息网络爬虫实战示例】
CasperJS is a navigation scripting & testing utility for the PhantomJS (WebKit) and SlimerJS (Ge ...
- 如何用python抓取js生成的数据 - SegmentFault
如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...
- 网页抓取小工具(IE法)
网页抓取小工具(IE法)—— 吴姐 http://club.excelhome.net/thread-1095707-1-1.html 用IE提取网页资料的好处在于:所见即所得,网页上能看到的信息一般 ...
- 分享一个c#t的网页抓取类
using System; using System.Collections.Generic; using System.Web; using System.Text; using System.Ne ...
- 网页抓取:PHP实现网页爬虫方式小结
来源:http://www.ido321.com/1158.html 抓取某一个网页中的内容,需要对DOM树进行解析,找到指定节点后,再抓取我们需要的内容,过程有点繁琐.LZ总结了几种常用的.易于实现 ...
随机推荐
- jQuery 效果 – 淡入淡出
在在jQuery中可以通过四个方法来实现元素的淡入淡出,这四个方法分别是:fadeIn().fadeOut().fadeToggle() 以及 fadeTo(),本文通过实例来为你讲解如何在jQuer ...
- OAuth 2 深入介绍
1. 前言 2. OAuth2 角色 2.1 资源所有者(Resource Owner) 2.2 资源/授权服务器(Resource/Authorization Server) 2.3 客户端(Cli ...
- Python能做些什么?
前言 网上搜集到的一些python能做什么的资料,利用python能做很多事情,我们可以在多门课程中都使用Python作为我们的教学语言.比如,计算机网络.数据结构.人工智能.图像处理.软件分析与测试 ...
- iOS开源加密相册Agony的实现(七)
简介 虽然目前市面上有一些不错的加密相册App,但不是内置广告,就是对上传的张数有所限制.本文介绍了一个加密相册的制作过程,该加密相册将包括多密码(输入不同的密码即可访问不同的空间,可掩人耳目).Wi ...
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap,第 1 部分: kprobe
kprobe 的原理.编程接口.局限性和使用注意事项 本系列文章详细地介绍了一个Linux下的全新的调式.诊断和性能测量工具Systemtap和它所依赖的基础kprobe以及促使开发该工具的先驱DTr ...
- [boost] build boost with intel compiler 16.0.XXX
Introduction There are few information about how to compile boost with Intel compiler. This article ...
- Android的AIDL机制
Android 接口定义语言 (AIDL) AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似. 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的 ...
- @property的参数
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51353580 本文出自:[openXu的博客] 参数类别 参数 说明 原子性 atomic ...
- DBoW2应用
图像对应的bag-of-words向量\(v_t\) 假设词典总共有\(W\)个单词,那么每一幅图像能够用一个\(W\)维的向量表示 \((t_1, t_2, t_3, ..., t_W)\)其中 \ ...
- ubuntu opengl 开发
开发环境: eclipse,需要安装C++开发插件,在自带的源中查找安装C++开发工具包即可 下载安装gl库: sudo apt-get install libgl1-mesa-dev 下载安装glu ...