通过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];
    }





posted on 2015-02-09 10:22  张大大123  阅读(337)  评论(0编辑  收藏  举报

导航