android AccessibilityService合法合规采集大众点评app商店商品详情(2024-09-02)

免责任声明:

        任何可操作性的内容与本人无关,文章内容仅供参考学习,如有侵权损害贵公司利益,请联系作者,会立刻马上进行删除。

一、原理介绍


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值