免责任声明:
任何可操作性的内容与本人无关,文章内容仅供参考学习,如有侵权损害贵公司利益,请联系作者,会立刻马上进行删除。
一、原理介绍
1、打开大众点评app商店
public void open_shop(Context context,String shop_id)
{
String url="dianping://gcshopshell?shopuuid="+shop_id;
scroll_count=0;
Uri uri = Uri.parse(url); //
Intent intent =new Intent(Intent.ACTION_VIEW,uri);;
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
2、采集如下字段:
public class Commodity{
public int id;
public String title; //商品标题
public String price; //售价
public String market_price; //市场价
public String sales; //年销量
public String shop_id; //商店id
public String shop_index;
public int count;
}
3、 保存数据为Csv文件
Csv csv1=Csv.getInstance(context);
boolean bres=csv1.save_commodities(commodities);
if(bres==false){
fb.set_show("保存数据失败!请检查有没有数据存储权限!");
return;
}
4、滚动屏幕
private void performScroll(AccessibilityNodeInfo rootNode){
if(mCurrentUI.startsWith("com.dianping.shopshell")){
AccessibilityNodeInfo scrollNode=AccessibilityHelper.findNodeInfosById(rootNode,"com.dianping.v1:id/pagecontainer_recyclerview",0);
if(scrollNode!=null) {
if (scroll_count < 10) {
AccessibilityHelper.performScrollForward(scrollNode);
AccessibilityNodeInfo firstNode=AccessibilityHelper.findNodeInfoByTextAllMatched(rootNode,"抢购");
if(firstNode==null)scroll_count=10;
}
else {
AccessibilityHelper.performScrollBackward(scrollNode);
AccessibilityNodeInfo firstNode=AccessibilityHelper.findNodeInfoByTextAllMatched(rootNode,"封面");
if(firstNode!=null)scroll_count=0;
}
scroll_count += 1;
if (scroll_count > 20) {
scroll_count = 0;
}
}
//AccessibilityNodeInfo no_moreNode=AccessibilityHelper.findNodeInfosByText(rootNode,"收起",0);
}
5、采集数据
private Commodity get_commodity(AccessibilityNodeInfo buyNode){
try{
AccessibilityNodeInfo parent=buyNode.getParent();
if(parent==null)return null;
parent=parent.getParent();
if(parent==null)return null;
int price_count=0;
Commodity commodity=new Commodity();
for (int i = 0; i < parent.getChildCount(); i++) {
AccessibilityNodeInfo child=parent.getChild(i);
if(child!=null&&child.getText()!=null){
String text=child.getText().toString();
text=text.replaceAll(",","[comma]");
commodity.shop_id=shop_id;
commodity.shop_index=String.valueOf(csv.shop_index);
commodity.count=commodity_count;
if(i==0){
//if(isInCommodities(text))return null;
commodity.title=text;
}
if(text.startsWith("年售"))commodity.sales=text;
if(text.startsWith("全国爆卖"))commodity.sales=text;
if(text.startsWith("¥")){
if(price_count==0)
commodity.price=text;
else
if(price_count==1)
commodity.market_price=text;
price_count+=1;
}
}
}
if(isInCommodities(commodity))return null;
return commodity;
}catch