这里介绍的是 对IOS程序员 要用的网络数据抓包的一个方法:
第一步:
(1)在火狐浏览器中 用FireBug 组建 抓取JAVA数据
(2)抓取要用的数据
(3)复制HTML文件,去我们的Xcode中去创建一个.html 的文件,并写好这四行
(4)将我们复制的文件 粘贴到第4行的位置(也就是<body> (这里) </body>),然后再去那个网页中找到<head>
同样复制HTML,然后放在第2行 (<html>的下面一行);
(5)这样,这一个网页我们已经创建好了,而且里面的数据都是我们要用的数据,这里要注意,我们现在如果打开这个网页,如果是乱码的,我们就要修改了,有些网页的使用gb2312的编码格式的,我们只要将其该为 UTF-8 就可以了!(一般都是head 下面的第一个
meta 大家注意下
)
第二步
1,安装 eclipse ,并且准备好 jsoup-1.7.3.jar开源工具。
2.创建工程,并创建一个class,创建一个nib文件夹用来放
jsoup-1.7.3.jar,然后将那个奶瓶样的东西点击下
3.编写代码 这个代码 大部分的东西都差不多 只要改的就是 for循环里面的东西。
package
Test;
import
java.io.File;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Loltest {
public static void main(String[] args) {
try {
//按我们要的格式 打印
System. out .println( "@[" );
//文件路径
String path = "/Users/macintosh/Desktop/goods.html" ;
//加载网页 这里是用 Jsoup.parse 获取文件 path中的东西 要new一个文件 附带哪种格式
Document doc = Jsoup.parse( new File(path), "UTF-8" );
//解析网页 这里相当于一个数组 从 doc 中,得到 数组 lis
Elements lis = doc.select( "li" );
// 遍历数组 lis
for ( int i = 0; i < lis.size();i++){
//获取 第i个 元素 的数组
Element li = lis.get(i);
//从数组 li 中 得到 img 数组;
Element img = li.select( "img" ).get(0);
//获取图片名 从数组 img 中取出 src 属性的值
String icon = img.attr( "src" );
String title = img.attr( "alt" );
//取出数组 span 中的文本 有多个 span 的时候 要注意 这里要的是第几个 从0开始
Element span1 = li.select( "span" ).get(0);
String count = span1.text();
Element span2 = li.select( "span" ).get(2);
String size = span2.text();
Element div = li.select( "div" ).get(3);
String divs = div.text();
//设置我们要的数组样式的格式
System. out .println( "@{@\"icon\":@\"" +icon + "\", @\"title\":@\"" +title + "\",@\"count\":@\"" + count + "\",@\"size\":@\"" +size + "\",@\"divs\":@\"" +divs + "\"}," );
}
//按我们要的格式 打印
System. out .println( "];" );
} catch (Exception e){
e.printStackTrace();
}
}
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Loltest {
public static void main(String[] args) {
try {
//按我们要的格式 打印
System. out .println( "@[" );
//文件路径
String path = "/Users/macintosh/Desktop/goods.html" ;
//加载网页 这里是用 Jsoup.parse 获取文件 path中的东西 要new一个文件 附带哪种格式
Document doc = Jsoup.parse( new File(path), "UTF-8" );
//解析网页 这里相当于一个数组 从 doc 中,得到 数组 lis
Elements lis = doc.select( "li" );
// 遍历数组 lis
for ( int i = 0; i < lis.size();i++){
//获取 第i个 元素 的数组
Element li = lis.get(i);
//从数组 li 中 得到 img 数组;
Element img = li.select( "img" ).get(0);
//获取图片名 从数组 img 中取出 src 属性的值
String icon = img.attr( "src" );
String title = img.attr( "alt" );
//取出数组 span 中的文本 有多个 span 的时候 要注意 这里要的是第几个 从0开始
Element span1 = li.select( "span" ).get(0);
String count = span1.text();
Element span2 = li.select( "span" ).get(2);
String size = span2.text();
Element div = li.select( "div" ).get(3);
String divs = div.text();
//设置我们要的数组样式的格式
System. out .println( "@{@\"icon\":@\"" +icon + "\", @\"title\":@\"" +title + "\",@\"count\":@\"" + count + "\",@\"size\":@\"" +size + "\",@\"divs\":@\"" +divs + "\"}," );
}
//按我们要的格式 打印
System. out .println( "];" );
} catch (Exception e){
e.printStackTrace();
}
}
}
------------------------------------以下OC 代码
第三步
接下来要做的,就是我们纯粹的ios操作了!
//复制JAVA的输出结果 放置这个数组中!
NSArray * arr = @[
@{@"icon":@"http://img.wdjimg.com/mms/icon/v1/9/23/8b91d2345fad29bdba4b1cf2b8c89239_68_68.png", @"title":@"愤怒的小鸟",@"count":@"219 万人安装",@"size":@"45.81M",@"divs":@"AppStore 下载量 TOP3,名扬四海的益智手游。"}
];
//创建 plist文件要写入的地址
NSString * path = @"/Users/macintosh/Desktop/素材/应用软件/app.plist";
//创建一个可变数组,以用来转换 原生成数组的数据 对以修改
NSMutableArray * arrWrite = [NSMutableArray array];
//遍历数组 提取信息 下载图片
for (NSDictionary * dic in arr) {
//取出每个图片所对应的网络地址
NSString * str = [dic valueForKey:@"icon"];
//网络地址转为 URL 格式
NSURL * url = [NSURL URLWithString:str];
//创建 NSData 以数据流的方式 下载网络图片,
NSData * icon = [NSData dataWithContentsOfURL:url];
//获取 网络地址所对的 末尾名 作文图片的文件名
NSString * lastName = [str lastPathComponent];
//创建 图片下载后要存放的地方 这里要注意 每个文件的路径要不一样,不然会发生覆盖 所以最好是提取了图片名 对应下载 这里的文件夹要注意已经创建好
NSString * filePath = [NSString stringWithFormat:@"/Users/macintosh/Desktop/素材/应用软件/icon/%@",lastName];
//将 NSData 的数据写入 要对应的文件中
[icon writeToFile:filePath atomically:YES]; // 返回值是BOOL类型
//将 arr 的 dic 转为 NSMutableDictionary 这里要注意 dic 只是一个 常量类型 不可以去加以修改
NSMutableDictionary * mDic = [NSMutableDictionary dictionaryWithDictionary:dic];
//改变 mDic中 icon 所对应的名字 原本是一个网络路径名的 改为 一个单字符串名字
[mDic setValue:lastName forKey:@"icon"];
//将修改好的mDic 放置 之前创建的可变数组中 以便于写入 .plist文件中
[arrWrite addObject:mDic];
}
//写入文件 将新的数组 写入.plist 文件中
@{@"icon":@"http://img.wdjimg.com/mms/icon/v1/9/23/8b91d2345fad29bdba4b1cf2b8c89239_68_68.png", @"title":@"愤怒的小鸟",@"count":@"219 万人安装",@"size":@"45.81M",@"divs":@"AppStore 下载量 TOP3,名扬四海的益智手游。"}
];
//创建 plist文件要写入的地址
NSString * path = @"/Users/macintosh/Desktop/素材/应用软件/app.plist";
//创建一个可变数组,以用来转换 原生成数组的数据 对以修改
NSMutableArray * arrWrite = [NSMutableArray array];
//遍历数组 提取信息 下载图片
for (NSDictionary * dic in arr) {
//取出每个图片所对应的网络地址
NSString * str = [dic valueForKey:@"icon"];
//网络地址转为 URL 格式
NSURL * url = [NSURL URLWithString:str];
//创建 NSData 以数据流的方式 下载网络图片,
NSData * icon = [NSData dataWithContentsOfURL:url];
//获取 网络地址所对的 末尾名 作文图片的文件名
NSString * lastName = [str lastPathComponent];
//创建 图片下载后要存放的地方 这里要注意 每个文件的路径要不一样,不然会发生覆盖 所以最好是提取了图片名 对应下载 这里的文件夹要注意已经创建好
NSString * filePath = [NSString stringWithFormat:@"/Users/macintosh/Desktop/素材/应用软件/icon/%@",lastName];
//将 NSData 的数据写入 要对应的文件中
[icon writeToFile:filePath atomically:YES]; // 返回值是BOOL类型
//将 arr 的 dic 转为 NSMutableDictionary 这里要注意 dic 只是一个 常量类型 不可以去加以修改
NSMutableDictionary * mDic = [NSMutableDictionary dictionaryWithDictionary:dic];
//改变 mDic中 icon 所对应的名字 原本是一个网络路径名的 改为 一个单字符串名字
[mDic setValue:lastName forKey:@"icon"];
//将修改好的mDic 放置 之前创建的可变数组中 以便于写入 .plist文件中
[arrWrite addObject:mDic];
}
//写入文件 将新的数组 写入.plist 文件中
[arrWrite writeToFile:path atomically:YES];
}
这样,大功告成!你可以去你的文件夹中看看文件的情况了!