亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java批量采集豌豆莢網站Android應用圖標和包名

2019-11-26 15:29:11
字體:
來源:轉載
供稿:網友

Android主題開發者做的主題,如果想代替第三方應用圖標,就必須要知道應用的包名。其實想知道應用的包名很簡單,直接在瀏覽器打開Google Play或豌豆莢,打開某應用的頁面,看網址你就會發現,網址最后“/”字符后接的就是應用的包名!

估計有人想把常用應用的圖標和包名都搞下來,所以用java寫了個小程序,批量抓取了豌豆莢上“全部軟件”按總下載量排名里1到20頁的應用圖標與包名。

所有圖標都用包名來命名的,里面還有一個packageName.txt文件,包含了應用名稱對應的包名,方便查找。

java源碼

分享這個java小程序,注意,如果豌豆莢的網頁結構變了(估計很少改變吧),這個小程序就需要修改一下了,如果看得懂的話,修改很簡單的咯。

以下代碼可能已失效,僅作參考!

復制代碼 代碼如下:

package im.garth.AppIconDownloader;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map.Entry;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * 獲取豌豆莢網頁上安卓軟件全部軟件
 * 注意:執行程序前,一定要在這個工程目錄下創建icon文件夾
 * 所有圖標將下載到icon這個文件夾中
 * 應用名稱與包名寫到了icon下的packageName.txt文件里
 *
 * 這個程序用到的jar包:
 * commons-logging-1.1.3.jar
 * httpclient-4.1.2.jar
 * httpcore-4.3.jar
 * jsoup-1.6.1.jar
 *
 *
 */
public class AppIconDownloader {

 /**
  * @param args
  */
 public static void main(String[] args) {

  String rootUrl = "http://www.wandoujia.com/tag/全部軟件/total?page=";
  //String rootUrl = "http://www.wandoujia.com/tag/全部游戲/total?page=";
  //下載1到20頁的應用圖標
  for(int i = 1; i < = 20; i++) {
   System.out.println("【下載進度】:準備下載第" + i + "頁");
   String currentUrl = rootUrl + i;
   HashMap<String, String> apps = new HashMap<string , String>();
   apps = getAppImageUrl(currentUrl);
   //遍歷HashMap逐個下載圖標
   for(Entry</string><string , String> entry : apps.entrySet()) {
    try{
     //下載圖標,存儲到當前工程目錄下的icon目錄(請事先創建icon目錄)
     download(entry.getValue(), "icon/" + entry.getKey() + ".png");
    }catch(Exception e) {
     System.out.println("【下載出錯】:" + entry.getKey());
     e.printStackTrace();
    }
   }
   System.out.println("【下載進度】:第" + i + "頁下載完成");
  }

 }

 /**
  * 獲取url網頁里的所有應用的應用名及其圖標網址
  * @param appPackageName
  * @return
  */
 private static HashMap</string><string , String> getAppImageUrl(String url) {

  HashMap</string><string , String> apps = new HashMap</string><string , String>();
  String appPackageName = "";
  String appImageUrl = "";
  String appName = "";

  String html = getHtmlByUrl(url);
  Document doc = Jsoup.parse(html);
     Elements elements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>a.icon-area"); 
     Elements nameElements = doc.select("div.container.clearfix>section.main-col>div.app-blocks>div.app-block>ul.app-list.clearfix>li.app>div.operate>a.name>span.txt"); 
     Elements imageEle;

     int i = 0;
     for(Element ele : elements) {
      //獲取包名
      appPackageName = ele.attr("data-pn");
      //獲取圖標網址
      imageEle = ele.select("img.icon");
      appImageUrl = imageEle.get(0).attr("src").replace("68_68", "256_256");
      //加入apps
      apps.put(appPackageName, appImageUrl);
      //獲取app名稱
      appName = nameElements.get(i).text();
      //把app名稱和包名輸出到文件
      write2file("【" + appName + "】" + appPackageName);
      i++;
     }
     System.out.println("【下載進度】:" + url + "下的圖標網址已經獲取成功");
  return apps;
 }

 /**
    * 下載文件到本地
    *
    * @param urlString
    *          被下載的文件地址
    * @param filename
    *          本地文件名
    * @throws Exception
    *           各種異常
    */
 private static void download(String urlString, String filename) throws Exception {
  System.out.println("【下載進度】:正在下載" + filename);
     // 構造URL
     URL url = new URL(urlString);
     // 打開連接
     URLConnection con = url.openConnection();
     // 輸入流
     InputStream is = con.getInputStream();
     // 1K的數據緩沖
     byte[] bs = new byte[1024];
     // 讀取到的數據長度
     int len;
     // 輸出的文件流
     OutputStream os = new FileOutputStream(filename);
     // 開始讀取
     while ((len = is.read(bs)) != -1) {
       os.write(bs, 0, len);
     }
     // 完畢,關閉所有鏈接
     os.close();
     is.close();
     System.out.println("【下載進度】:" + filename + "下載成功");
 }  

 /**
  * 根據URL獲得所有的html信息
  * @param url
  * @return html
  */ 
 private static String getHtmlByUrl(String url){ 
     String html = null; 
     //創建httpClient對象
     HttpClient httpClient = new DefaultHttpClient(); 
     //以get方式請求該URL
     HttpGet httpget = new HttpGet(url); 
     try { 
         //得到responce對象
         HttpResponse responce = httpClient.execute(httpget);
         //返回碼
         int resStatu = responce.getStatusLine().getStatusCode(); 
         //200正常  其他就不對 
         if (resStatu==HttpStatus.SC_OK) {
             //獲得相應實體 
             HttpEntity entity = responce.getEntity(); 
             if (entity!=null) { 
                 //獲得html源代碼
                 html = EntityUtils.toString(entity); 
             } 
         } 
     } catch (Exception e) { 
         System.out.println("訪問【"+url+"】出現異常!"); 
         e.printStackTrace(); 
     } finally { 
         httpClient.getConnectionManager().shutdown(); 
     } 
     return html; 
 }

 private static void write2file(String content) {

  File file = new File("icon/packageName.txt");
  BufferedWriter writer = null;
  try{
   if(!file.exists()) {
    file.createNewFile();
   }
   //參數true表示將輸出追加到文件內容的末尾而不覆蓋原來的內容
   writer = new BufferedWriter(new FileWriter(file, true));
   //輸出內容
   writer.write(content);
   //換行
   writer.newLine();
  } catch(IOException e){
   System.out.println("輸出出錯");
   e.printStackTrace();
  } finally {
   if( writer != null) {
    try {
     writer.close();
    } catch(IOException e) {
     e.printStackTrace();
    }
   }
  }
 }

}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产69精品久久久久9999| 国产欧美亚洲视频| 色综合天天综合网国产成人网| 国产成人啪精品视频免费网| 欧美精品福利视频| 亚洲精品在线观看www| 亚洲一区二区三区久久| 亚洲精品国产精品国自产观看浪潮| 一区二区三区视频免费| 97婷婷涩涩精品一区| 日韩欧美一区视频| 欧美成人精品一区二区三区| 欧美国产一区二区三区| 亚洲精品456在线播放狼人| 欧美最猛性xxxxx免费| 欧美成人免费一级人片100| 欧美人成在线视频| 精品亚洲一区二区三区四区五区| 亚洲国内精品在线| 日韩在线观看av| 亚洲欧美日韩直播| 另类少妇人与禽zozz0性伦| 一本色道久久综合亚洲精品小说| 欧美国产日韩一区二区在线观看| 成人妇女免费播放久久久| 欧美又大粗又爽又黄大片视频| 成人av.网址在线网站| 国产精品欧美一区二区三区奶水| 午夜精品福利在线观看| 色妞一区二区三区| 国产日韩中文字幕在线| 日韩成人小视频| 欧美理论电影在线播放| 91欧美精品午夜性色福利在线| 亚洲精品在线观看www| 91亚洲va在线va天堂va国| 97视频色精品| 成人国产精品久久久久久亚洲| 久久久国产一区二区三区| 91天堂在线观看| 97精品国产97久久久久久免费| 国产一区二区三区丝袜| 国产欧美日韩中文字幕在线| 国产精品美女主播| 色综合色综合久久综合频道88| 国产在线精品成人一区二区三区| 美女撒尿一区二区三区| 久久偷看各类女兵18女厕嘘嘘| 日韩一区二区三区xxxx| 综合国产在线视频| 久久99热精品| 欧美高清视频在线观看| 人人爽久久涩噜噜噜网站| 欧美乱妇高清无乱码| 亚洲黄页视频免费观看| 国产精品 欧美在线| 正在播放欧美一区| 日韩电影免费观看中文字幕| 奇米四色中文综合久久| 欧美肥臀大乳一区二区免费视频| 国产精品久久久久久婷婷天堂| 久久激情五月丁香伊人| 国产精品日韩在线观看| 国产精品视频白浆免费视频| 久久久精品免费视频| 亚洲欧洲日产国码av系列天堂| 亚洲欧洲视频在线| 国产精品午夜国产小视频| 日韩欧美视频一区二区三区| 91九色视频导航| 日韩欧美大尺度| 欧美激情一级二级| 国产精品久久久久久久午夜| 色午夜这里只有精品| 亚洲深夜福利视频| 91国产精品电影| 精品免费在线观看| 国产日韩欧美在线视频观看| 欧美极品少妇xxxxx| 欧美在线视频一区| 久久久久久国产三级电影| 高清视频欧美一级| 91免费国产视频| 日本亚洲欧洲色α| 成人欧美一区二区三区在线| 午夜精品视频网站| 中文字幕亚洲天堂| 影音先锋欧美精品| 国产偷亚洲偷欧美偷精品| 亚洲国产女人aaa毛片在线| 欧美小视频在线| 精品自在线视频| 伊是香蕉大人久久| 亚洲第一中文字幕在线观看| 欧美午夜精品在线| 欧美激情视频网址| 亚洲国产精彩中文乱码av在线播放| 亚洲欧美一区二区三区四区| 国产在线高清精品| 韩剧1988免费观看全集| 91超碰caoporn97人人| 亚洲成人黄色网| 成人福利视频在线观看| 日本电影亚洲天堂| 亚洲国产免费av| 日韩亚洲欧美成人| 国产亚洲激情视频在线| 午夜欧美不卡精品aaaaa| 国产美女91呻吟求| 色先锋资源久久综合5566| 粉嫩av一区二区三区免费野| 国语自产精品视频在线看| 欧美黑人xxxx| 亚洲综合一区二区不卡| 日本久久久久久久久久久| 91在线高清免费观看| 国产在线精品成人一区二区三区| 久久久久国产一区二区三区| 欧美精品videofree1080p| 日韩av网站电影| 欧美日韩国产精品一区二区不卡中文| 日本精品一区二区三区在线| 日韩成人性视频| 国产精品老牛影院在线观看| 色yeye香蕉凹凸一区二区av| 久久精品视频免费播放| 日韩极品精品视频免费观看| 亚洲毛片在线观看.| 欧美丰满少妇xxxxx做受| 69久久夜色精品国产7777| 亚洲欧美制服另类日韩| 成人免费看黄网站| 国产精品美女视频网站| 欧美一级高清免费播放| 久久久亚洲精品视频| 亚洲国产精品系列| 在线精品国产欧美| 国产精品444| 亚洲**2019国产| 成人免费高清完整版在线观看| 国产精品香蕉国产| 欧美成人免费大片| 日韩中文字幕久久| 久久成人精品一区二区三区| 17婷婷久久www| 欧美精品久久久久久久免费观看| 一本大道亚洲视频| 久久久久久亚洲精品| 亚洲a在线观看| 国产精品一区二区电影| 欧美在线影院在线视频| 久久久久久这里只有精品| 中文字幕视频在线免费欧美日韩综合在线看| 久久久女人电视剧免费播放下载| 久久久99免费视频| 中文字幕欧美视频在线| 日韩视频免费在线观看| xxav国产精品美女主播| 国产午夜精品久久久| 日韩av在线资源| 亚洲免费伊人电影在线观看av| 欧美激情精品在线| 亚洲精品免费在线视频| 91精品一区二区|