Android 利用jsoup 抓取腾讯应用市场的软件APP,作为我们自己应用的数据


http://blog.csdn.net/xufeifandj/article/details/41593391(转)

最近想做自己的一个应用市场,但是苦于,没有应用数据,因此,用jsoup来抓取,腾讯应用市场的软件APP各种数据,

挺不错的。哈哈。你要啥数据都有哈。 不错。

直接看代码

封装了 下代码。

大家直接输入,腾讯应用宝的 具体软件地址,即可,进行 解析了。

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package com.ferris.event.app;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7. import org.jsoup.Jsoup;  
  8. import org.jsoup.helper.StringUtil;  
  9. import org.jsoup.nodes.Document;  
  10. import org.jsoup.nodes.Element;  
  11. import org.jsoup.select.Elements;  
  12.   
  13. import com.ferris.entity.AppDetail;  
  14. import com.ferris.entity.AppDownloadInfo;  
  15. import com.ferris.utils.StringUtils;  
  16.   
  17. public class AppGetService {  
  18.     public static final String urlhead = "http://android.myapp.com/myapp/";  
  19.     private static final Object lock = new Object();  
  20.   
  21.     public AppGetService() {  
  22.         // TODO Auto-generated constructor stub  
  23.     }  
  24.   
  25.       
  26.       
  27.       
  28.       
  29.           
  30.     public static List<AppDownloadInfo> getNetApp(String app) {  
  31.         synchronized (lock) {  
  32.   
  33.             List<AppDownloadInfo> liAppDownloadInfos = new ArrayList<AppDownloadInfo>();  
  34.             Document doc;  
  35.             try {  
  36.                 doc = Jsoup.connect(app).get();  
  37.                 Elements ListDiv = doc.getElementsByAttributeValue("class",  
  38.                         "app-info-desc");  
  39.                 for (Element element : ListDiv) {  
  40.                     AppDownloadInfo appDownloadInfo = new AppDownloadInfo();  
  41.                     appDownloadInfo.setAppname(element.select("a").attr(  
  42.                             "appname"));  
  43.                     appDownloadInfo.setAppsize(element.getElementsByClass(  
  44.                             "size").text());  
  45.                     appDownloadInfo.setTypename(element.getElementsByClass(  
  46.                             "download").text());  
  47.                     appDownloadInfo.setAppmd5(urlhead  
  48.                             + element.select("a").attr("href"));  
  49.                     appDownloadInfo.setIconurl(element.select("a").attr(  
  50.                             "appicon"));  
  51.                     appDownloadInfo.setPackagename(element.select("a").attr(  
  52.                             "apk"));  
  53. //                  http://dd.myapp.com/16891/548EBCD7DD5F97E652615EECBD352905.apk?fsname=com%2Etencent%2Emobileqq%5F5%2E2%2E1%5F182.apk&asr=8eff  
  54.                     String downloadurl=element.select("a").attr(  
  55.                             "ex_url");  
  56.                     if(!StringUtils.isEmpty(downloadurl)){  
  57.                           
  58.                           
  59.                         appDownloadInfo.setDownloadUrl(downloadurl.substring(0, downloadurl.indexOf("?")));  
  60.                     }  
  61.                       
  62.                       
  63.                     liAppDownloadInfos.add(appDownloadInfo);  
  64.                     appDownloadInfo = null;  
  65.                 }  
  66.             } catch (IOException e) {  
  67.                 // TODO Auto-generated catch block  
  68.                 e.printStackTrace();  
  69.                 return null;  
  70.             }  
  71.   
  72.             return liAppDownloadInfos;  
  73.         }  
  74.     }  
  75.   
  76.     public static AppDetail getNetAppDetail(String appdetail) {  
  77.         synchronized (lock) {  
  78.             AppDetail appDetail = new AppDetail();  
  79.             Elements listDiv = null;  
  80.             Document doc;  
  81.             try {  
  82.                 doc = Jsoup.connect(appdetail).get();  
  83.   
  84.                 if (doc == null) {  
  85.                     return null;  
  86.                 }  
  87.   
  88.                 List<String> tupian = new ArrayList<String>();  
  89.                 listDiv = doc.getElementsByAttributeValue("class",  
  90.                         "pic-img-box");  
  91.   
  92.                 if (listDiv != null && listDiv.size() > 0) {  
  93.                     for (Element element : listDiv) {  
  94.                         tupian.add(element.select("img").attr("data-src"));  
  95.                     }  
  96.   
  97.                     appDetail.setPreviewurl(tupian);  
  98.                     listDiv = null;  
  99.                 }  
  100.   
  101.                 listDiv = doc.getElementsByAttributeValue("class",  
  102.                         "det-othinfo-data");  
  103.                 if (listDiv != null && listDiv.size() > 0) {  
  104.                     final List<String> string = new ArrayList<String>();// 获取到  
  105.                                                                         // //  
  106.                                                                         // 版本号,以及开发商  
  107.                     int z = 1;  
  108.                     for (Element element : listDiv) {  
  109.   
  110.                         if (element.childNodeSize() > 0) {  
  111.                             if (z == 1) {  
  112.                                 appDetail.setAppversion(element.text());  
  113.                                 ++z;  
  114.                             }  
  115.                             if (z == 2) {  
  116.                                 appDetail.setKaifashang(element.text());  
  117.                             }  
  118.   
  119.                         }  
  120.   
  121.                     }  
  122.   
  123.                     listDiv = null;  
  124.   
  125.                 }  
  126.   
  127.                 listDiv = doc.getElementsByAttributeValue("class",  
  128.                         "det-app-data-info");  
  129.                 if (listDiv != null && listDiv.size() > 0) {  
  130.                     for (Element element : listDiv) {  
  131.                         if (element.childNodeSize() > 0) {  
  132.                             appDetail.setDescription(element.text());  
  133.                         }  
  134.                     }  
  135.                     listDiv = null;  
  136.                 }  
  137.   
  138.             } catch (IOException e) {  
  139.                 // TODO Auto-generated catch block  
  140.                 e.printStackTrace();  
  141.             }  
  142.             return appDetail;  
  143.         }  
  144.     }  
  145. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值