java解析xml文件练习——通过应用包名获取应用图标即其他信息(基于魅族应用商店)

1、解析包名数据文件(txt文件),并生成包名数组:

package jsouphtml;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class GetPackageName {

	public static String[] getPackageName(String filename){
		String packagename[]=null;
		BufferedReader iStream=null;
		String line = null;
		File packagenames = new File(filename);//"D:\\packagenames.txt"
		try {
			StringBuffer content=new StringBuffer();
			iStream = new BufferedReader(new FileReader(packagenames));

			while ((line=iStream.readLine())!=null) {
				content.append(line.trim());
			}
			packagename=content.toString().split(",");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(iStream!=null)
				try {
					iStream.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
		return packagename;
	}
}

  2、抓取数据,生成图标文件(基于魅族应用商店):

package jsouphtml;

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.io.OutputStream;

import java.net.URL;
import java.net.URLConnection;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class MzTheme {

	public static void main(String[] args) {
		InputStream inputStream = null;
		OutputStream outputStream = null;
		try {
			String url = "http://app.flyme.cn/apps/public/detail?package_name=";

			String packagenames[] = GetPackageName.getPackageName("D:\\packagenames.txt");
			System.out.println(packagenames.length);
			for (int i =1;i<packagenames.length;i++) {

				System.out.println(i);
				Document doc = Jsoup.connect(url +packagenames[i]).get();
				if(doc.getElementsByClass("mz_content mz_container clearfix").isEmpty()){
					Element cElement = doc.getElementById("theme_content");
					Elements imgs = cElement.getElementsByClass("app_img");
					String src = imgs.first().attr("src");
					System.out.println(src);
					System.out.println(packagenames[i]);
					File icon = new File("D:\\icons\\" + packagenames[i] + ".png");//图标存放目录,可根据情况修改
					// 1.获取网址				

					URL u = new URL(src);
					// 2.打开连接
					URLConnection conn = u.openConnection();
					// 3.获取输入流与写出流

					inputStream = conn.getInputStream();
					outputStream = new FileOutputStream(icon);
					// 4.将源代码写入内存(设置编码)
					byte[] b = new byte[2048];
					int len = 0;
					while ((len = inputStream.read(b)) != -1) {
						outputStream.write(b, 0, len);

					}
				}else{
					System.out.println(packagenames[i]+",No_Exit");
				}
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 关闭I/o
			try {
				if (outputStream != null)
					outputStream.close();
				if (inputStream != null)
					inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}

	}

}

  生成图标文件(基于应用宝):

package jsouphtml;

import java.io.File;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import java.io.OutputStream;

import java.net.URL;
import java.net.URLConnection;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupHtml {

	public static void main(String[] args) {
		InputStream inputStream = null;
		OutputStream outputStream = null;
		try {
			//String url = "http://app.flyme.cn/apps/public/detail?package_name=";
			//String url = "http://app.mi.com/details?id=";
			//String url ="http://www.wandoujia.com/apps/";
			String url = "http://sj.qq.com/myapp/detail.htm?apkName=";
			String packagenames[] = GetPackageName.getPackageName("D:\\packagenames.txt");
			System.out.println(packagenames.length);
			for (int i =1;i<packagenames.length;i++) {
				System.out.println(i);

				Document doc = Jsoup.connect(url +packagenames[i]).get();
				Element content = doc.getElementById("det-icon");
				//Elements imgs = doc.getElementsByClass("app_img"); //魅族应用商店
				//Elements imgs = doc.getElementsByClass("yellow-flower");
				if(content.isBlock()){
				Elements imgs = doc.getElementsByTag("img");
				String src = imgs.first().attr("src");
				System.out.println(src);
				System.out.println(packagenames[i]);
				File icon = new File("D:\\yingyongbao\\" + packagenames[i] + ".png");
				// 1.获取网址				

				URL u = new URL(src);
				// 2.打开连接
				URLConnection conn = u.openConnection();
				// 3.获取输入流与写出流

				inputStream = conn.getInputStream();
				outputStream = new FileOutputStream(icon);
				// 4.将源代码写入内存(设置编码)
				byte[] b = new byte[2048];
				int len = 0;
				while ((len = inputStream.read(b)) != -1) {
					outputStream.write(b, 0, len);

				}
			}else{
					System.out.println(packagenames[i]+",No_Exit");
				}
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 关闭I/o
			try {
				if (outputStream != null)
					outputStream.close();
				if (inputStream != null)
					inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}

		}		

	}  

}

  包名数据(meizu.txt):

air.fyzb3,air.tv.douyu.android,android.zhibo8,bubei.tingshu,cc.fotoplace.app,chinatelecom.mwallet,cld.navi.mainframe,cmb.pb,cmccwm.mobilemusic,cn.amazon.mShop.android,cn.andouya,cn.banshenggua.aichang,cn.buding.martin,cn.cj.pe,cn.cntv,cn.colorv,cn.com.fetion,cn.com.kuting.activity,cn.com.nd.s,cn.com.opda.android.clearmaster,cn.eclicks.drivingtest,cn.eclicks.wzsearch,cn.ibuka.manga.ui,cn.j.guang,cn.j.hers,cn.jingling.motu.photowonder,cn.jj,cn.kuwo.player,cn.kuwo.tingshu,cn.ledongli.ldl,cn.mama.activity,cn.mucang.drunkremind.android,cn.mucang.kaka.android,cn.mucang.xiaomi.android,cn.mucang.xiaomi.android.wz,cn.opda.a.phonoalbumshoushou,cn.relian99,cn.wps.moffice_eng,com.A17zuoye.mobile.homework,com.achievo.vipshop,com.adobe.flashplayer,com.adobe.reader,com.akazam.android.wlandialer,com.alensw.PicFolder,com.alex.lookwifipassword,com.ali.money.shield,com.alibaba.android.rimet,com.alibaba.wireless,com.android.bankabc,com.android.cheyooh,com.android.chrome,com.android.comicsisland.activity,com.android.dazhihui,com.Android56,com.androidesk,com.androidesk.livewallpaper,com.anguanjia.safe,com.anguanjia.security,com.anjuke.android.app,com.antutu.ABenchMark,com.anzogame.game,com.anzogame.lol,com.aoratec.wifimanager,com.autoconnectwifi.app,com.autohome.mycar,com.autonavi.cmccmap,com.autonavi.minimap,com.autonavi.xmgd.navigator,com.babytree.apps.pregnancy,com.baidu.BaiduMap,com.baidu.baidutranslate,com.baidu.browser.apps,com.baidu.easyroot,com.baidu.hao123,com.baidu.homework,com.baidu.iknow,com.baidu.input,com.baidu.lbs.waimai,com.baidu.netdisk,com.baidu.news,com.baidu.searchbox,com.baidu.tieba,com.baidu.video,com.baozoumanhua.android,com.baozun.customer.main,com.beastudio.sflashlight,com.besttone.elocal,com.besttone.hall,com.bilin.huijiao.activity,com.blackbean.cnmeach,com.brianbaek.popstar,com.browser2345,com.budejie.www,com.calendar.UI,com.centurysoft.fruityrobo,com.changba,com.chaozh.iReaderFree,com.chinamobile.cmccwifi,com.chinamobile.contacts.im,com.chinamworld.bocmbci,com.chinamworld.main,com.chinatelecom.bestpayclient,com.chinatelecom.pim,com.cinema2345,com.cleanmaster.mguard_cn,com.cleanmaster.security_cn,com.cmbchina.ccd.pluto.cmbActivity,com.cmcc.cmvideo,com.codoon.gps,com.coohuaclient,com.cootek.smartdialer,com.corp21cn.flowpay,com.ct.client,com.cubic.autohome,com.cubic.choosecar,com.culiu.purchase,com.culiu.tenpics,com.culiukeji.huanletao,com.dangdang.buy2,com.daohang2345,com.dawx.seafloor,com.DBGame.DiabloLOL,com.dewmobile.kuaiya,com.dianping.v1,com.dianxinos.dxhome,com.dianxinos.superuser,com.didapinche.booking,com.dou_pai.DouPai,com.douguo.recipe,com.dp.android.elong,com.dsi.ant.plugins.antplus,com.duoduo.child.story,com.duokan.reader,com.duomi.android,com.duowan.bi,com.duowan.groundhog.mctools,com.duowan.kiwi,com.duowan.lolbox,com.duowan.mobile,com.dw.btime,com.eastmoney.android.berlin,com.eg.android.AlipayGphone,com.erdo.android.FJDXCartoon,com.esbook.reader,com.estrongs.android.pop,com.evernote,com.fanli.android.apps,com.fenbi.android.gaozhong,com.fenbi.android.solar,com.flightmanager.view,com.fone.player,com.frego.flashlight,com.funshion.video.mobile,com.gameloft.android.ANMP.GloftA8CN,com.gameloft.android.ANMP.GloftDMCN,com.ganji.android,com.gau.go.launcherex,com.geili.koudai,com.gift.android,com.google.android.apps.docs,com.google.android.apps.maps,com.google.android.inputmethod.pinyin,com.google.android.street,com.gotokeep.keep,com.gozap.labi.android,com.gtgj.view,com.gwsoft.imusic.controller,com.haishiydmm.fish,com.handsgo.jiakao.android,com.haobao.wardrobe,com.haodou.recipe,com.happyteam.dubbingshow,com.hexin.plat.android,com.hf,com.hipu.yidian,com.hisunflytone.android,com.hjwordgames,com.hola.launcher,com.huaqian,com.huati,com.huawei.fans,com.huawei.hidisk,com.huluxia.mctool,com.hunantv.imgo.activity,com.husor.beibei,com.husor.mizhe,com.ibox.flashlight,com.icbc,com.icbc.im,com.icoolme.android.weather,com.ifeng.news2,com.ifeng.newvideo,com.iflytek.cmcc,com.iflytek.inputmethod,com.iflytek.ringdiyclient,com.ifreetalk.ftalk,com.ijinshan.browser_fast,com.ijinshan.duba,com.ijinshan.kbatterydoctor,com.imangi.templerun2,com.immomo.momo,com.imusic.iting,com.instamag.activity,com.intsig.BizCardReader,com.intsig.camscanner,com.iooly.android.lockscreen,com.itings.myradio,com.iyd.reader.ReadingJoy,com.jiasoft.swreader,com.jingdian.tianxiameishi.android,com.jingdong.app.mall,com.jiongji.andriod.card,com.jiubang.goscreenlock,com.jiuyan.infashion,com.jm.android.jumei,com.jsmcc,com.juanpi.ui,com.jxedt,com.kandian.vodapp,com.kiloo.subwaysurf,com.kingreader.framework,com.kingroot.kinguser,com.kingroot.master,com.kingsoft,com.koudai.weidian.buyer,com.koudai.weishop,com.kuaikan.comic,com.kugou.android,com.kugou.android.ringtone,com.kunpeng.babyting,com.kxshow,com.lbe.security,com.le123.ysdq,com.lectek.android.sfreader,com.leixun.taofen8,com.lejent.zuoyeshenqi.afanti,com.lemon.faceu,com.lenovo.anyshare,com.lenovo.calendar,com.lenovo.safecenter,com.lesports.glivesports,com.letv.android.client,com.lingan.seeyou,com.lingdong.client.android,com.liveaa.education,com.longzhu.tga,com.lovebizhi.wallpaper,com.ludashi.benchmark,com.m4399.gamecenter,com.manboker.headportrait,com.mapbar.android.mapbarmap,com.mci.smagazine,com.meelive.ingkee,com.meilishuo,com.meitu.makeup,com.meitu.meipaimv,com.meitu.meiyancamera,com.meitu.wheecam,com.melot.meshow,com.miantan.myoface,com.microsoft.office.onenote,com.MobileTicket,com.mogujie,com.moji.mjweather,com.moxiu.launcher,com.mt.mtxx.mtxx,com.mydream.wifi,com.mymoney,com.mymoney.sms,com.nd.android.pandahome2,com.nd.android.pandareader,com.netease.cloudmusic,com.netease.mail,com.netease.newsreader.activity,com.netease.pris,com.nice.main,com.nuomi,com.ophone.reader.ui,com.oupeng.mini.android,com.p1.mobile.putong,com.panda.videoliveplatform,com.pingan.lifeinsurance,com.pingan.pabank.activity,com.pingan.papd,com.pingan.pinganwifi,com.pingco.android.mix,com.pingco.jc258cup,com.pipcamera.activity,com.pplive.androidphone,com.qianshoulian.app,com.qidian.QDReader,com.qigame.lock,com.qihoo.cleandroid_cn,com.qiyi.video,com.qq.ac.android,com.qq.qcloud,com.qq.reader,com.quanleimu.activity,com.Qunar,com.quvideo.xiaoying,com.qzone,com.renren.mobile.android,com.rinzz.noonedies,com.rongcai.show,com.rrh.jdb,com.sankuai.meituan,com.sankuai.meituan.takeoutnew,com.sankuai.movie,com.sdu.didi.gsui,com.sdu.didi.psnger,com.sec.chaton,com.sec.pcw,com.sg.sledog,com.shoujiduoduo.ringtone,com.shoujiduoduo.wallpaper,com.shuame.mobile,com.shuqi.controller,com.sina.news,com.sina.weibo,com.sinovatech.unicom.ui,com.slanissue.apps.mobile.erge,com.smile.gifmaker,com.snda.wifilocating,com.soft.blued,com.sogou.activity.src,com.sogou.map.android.maps,com.sogou.novel,com.sohu.inputmethod.sogou,com.sohu.newsclient,com.sohu.sohuvideo,com.soufun.app,com.soulgame.bubble,com.ss.android.article.news,com.ss.android.essay.joke,com.sskj.flashlight,com.storm.smart,com.sumavision.talktv2,com.suning.mobile.ebuy,com.supercell.clashofclans.wdj,com.syezon.wifi,com.tadu.android,com.taobao.ju.android,com.taobao.qianniu,com.taobao.taobao,com.taobao.trip,com.telecom.video,com.telecom.video.ikan4g,com.tencent.androidqqmail,com.tencent.clover,com.tencent.gallerymanager,com.tencent.hexkog,com.tencent.karaoke,com.tencent.KiHan,com.tencent.lightalk,com.tencent.map,com.tencent.mm,com.tencent.mobileqq,com.tencent.mobileqqi,com.tencent.mtt,com.tencent.news,com.tencent.now,com.tencent.pao,com.tencent.pb,com.tencent.peng,com.tencent.portfolio,com.tencent.qlauncher,com.tencent.qlauncher.lite,com.tencent.qqgame.xq,com.tencent.qqlite,com.tencent.qqlive,com.tencent.qqmusic,com.tencent.qqpim,com.tencent.qqpimsecure,com.tencent.qqpinyin,com.tencent.qt.qtl,com.tencent.radio,com.tencent.reading,com.tencent.tmgp.carrot3,com.tencent.tmgp.cf,com.tencent.tmgp.gods,com.tencent.tmgp.RunGame,com.tencent.tmgp.sgame,com.tencent.tmgp.ttcz,com.tencent.token,com.tencent.ttpic,com.tencent.unipay,com.tencent.WBlog,com.tencent.WeFire,com.tencent.wifimanager,com.tencent.zebra,com.tenpay.android,com.thestore.main,com.tianqi2345,com.tieyou.train.ark,com.tigerknows,com.ting.mp3.android,com.tiqiaa.icontrol,com.tmall.wireless,com.tongcheng.android,com.tripadvisor.tripadvisor.daodao,com.tuan800.tao800,com.tudou.android,com.tujia.hotel,com.tuniu.app.ui,com.ucamera.ucam,com.unionpay.uppay,com.ushaqi.zhuishushenqi,com.uu.uunavi,com.vlocker.locker,com.vmall.client,com.wacai365,com.wangzhi.MaMaHelp,com.wantu.activity,com.weihua.superphone,com.welove520.welove,com.wenba.bangbang,com.whatsapp,com.when.coco,com.wififreekey.wifi,com.wochacha,com.wuba,com.xg.nine,com.xiachufang,com.xiaobanlong.main,com.xiaoenai.app,com.xiaomi.hm.health,com.xiaomi.shop,com.ximalaya.ting.android,com.xingjiabi.shengsheng,com.xinmei365.font,com.xiudang.jiukuaiyou.ui,com.xtuone.android.syllabus,com.xunlei.downloadprovider,com.xunlei.kankan,com.xunmeng.pinduoduo,com.ygkj.chelaile.standard,com.yhouse.code,com.yibasan.lizhifm,com.yiche.autoeasy,com.yiche.price,com.yipiao,com.yixia.videoeditor,com.yixia.xiaokaxiu,com.yoloho.dayima,com.youan.universal,com.youba.barcode,com.youdao.dict,com.youdao.note,com.youku.phone,com.youloft.calendar,com.yourdream.app.android,com.youyuan.yyhl,com.yuedong.sport,com.yulong.android.coolmall,com.yulong.android.coolyou,com.yx,com.yy.yymeet,com.zdworks.android.zdclock,com.zhangdan.app,com.zhihu.android,com.zhiqupk.root,com.zte.heartyservice,com.ztgame.bob,com.zuobao.xiaobao,ctrip.android.view,dopool.player,flipboard.cn,fm.qingting.qtradio,fm.xiami.main,howbuy.android.piggy,InternetRadio.all,me.chunyu.ChunyuDoctor,me.ele,my.beautyCamera,oms.mmc.app.almanac_inland,org.cocos2d.fishingjoy3,org.fungo.fungolive,qsbk.app,sina.mobile.tianqitong,smskb.com,sogou.mobile.explorer,tv.danmaku.bili,tv.pps.mobile,viva.reader,vStudio.Android.Camera360,wb.gc.xmxx.zxb

  

本文只是提供一个思路,你可以根据自己的需求进一步开发,比如获取下载量等……

时间: 2024-08-06 19:21:08

java解析xml文件练习——通过应用包名获取应用图标即其他信息(基于魅族应用商店)的相关文章

java解析xml文件并输出

使用java解析xml文件,通过dom4j,代码运行前需先导入dom4j架包. ParseXml类代码如下: import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class

Java解析XML文件的四种方法

[摘要] 可扩展标志语言(XML)在实现信息标准化.信息的交流与共享上有其独特的技术优势,因此受到了广泛的重视.本文先简单的介绍了XML基本知识,然后从XML应用入手总结了四种现今最常见的XML的解析方法,介绍了这四种方法的特点,其中包括优点与不足之处.最后给出了一个简单的案例来对这四种解析进行代码介绍. [关键字] XML文件,DOM,SAX,JDOM,DOM4J [引言] XML即可扩展标记语言(EXtensible Markup Language),是标准通用标记语言的子集,是一种用于标记

java解析xml文件四种方式介绍、性能比较和基本使用方法

一.介绍: 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不

java 解析 xml 文件

学习下解析 xml 文件,这里用到了 org.dom4j 这个 jar 包,使用 eclipse 没有这个包的小伙伴可以去下个 jar 包,然后复制到项目路径下,右键 jar 包后 build path,add build path 即可. 来引入相关依赖: import java.io.File; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Elem

java解析xml文件

为什么使用xml作为数据交换?为什么用java解析xml?为什么用dom4J解析xml?dom解析和sax解析到底有什么区别? 带着这样的问题去学习,你发现这样的学习是最高效的 首先第一个问题:为什么使用xml作为数据交换 首先xml是一种无平台限制,无语言限制,无系统限制.使得xml可以在不同语言写的系统进行数据的交换,不同语言写的系统之间需求是不会改变,可能xml这种传输数据的介质会被其他的替代.比如json,可能json也会面临被替代.方式改变.但是需求是不会改变的.而且xml树节点的结构

Java解析XML文件的方式

在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式,在这部分里,将分别给大家演示通过这两种方式解析xml文件的一般步骤. 1 XML的文件格式     XML是可扩展标记语言(Extensible Markup Language)的缩写,在其中,开始标签和结束标签必须配套地出现,我们来看下book.xml这个例子. 1 <?xml version=

Java解析xml文件四种方式

1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不是

关于java解析xml文件出现的问题

问题1:导入javax.xml.parsers.DocumentBuilderFactory出现问题,如图: 解决办法是:由于创建工程时有个默认的jre,重新创建工程改掉就解决了,如图: 问题2:出现1 字节的 UTF-8 序列的字节 1 无效,解决办法: 使用记事本打开xml文件--点击文件-另存为-修改编码方式为UTF-8 -覆盖保存,如图: 以后出现问题还会补充

java 解析XML文件

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(inputStream); Element element = document.getDocumentElement(); NodeList dataNodes = ((Ele