精华内容
下载资源
问答
  • 今天要爬取华为应用商店的所有APP 名称和介绍,因为页面是js渲染的,所以要找到对应的接口去解析数据。 一.准备工作: 1.工具: (1)Chrome 谷歌浏览器 安装地址:https://www.google.cn/chrome/ (插件:json-...


    今天要爬取华为应用商店的所有APP名称和介绍,因为页面数据是ajax异步加载的,所以要找到对应的接口去解析数据。

    一.准备工作

    1.工具

    (1)Chrome 谷歌浏览器 安装地址:https://www.google.cn/chrome/ (插件:json-handle 下载地址:http://jsonhandle.sinaapp.com/,json-handle安装方法:

    https://blog.csdn.net/xb12369/article/details/79002208

    用于分析网页结构,以及接口的查找。
    (2)python 3.x 安装地址:https://www.python.org/ 用于编写代码
    (3)Mongodb 数据库存储数据 安装地址:https://www.mongodb.com/try/download/community, 用于存储数据,安装方法详见:

    https://blog.csdn.net/weixin_41466575/article/details/105326230

    二.思路

    1.整体思路

    在这里插入图片描述

    2.爬虫思路

    在这里插入图片描述

    三.分析网页

    开整,首先分析页面。

    1.分析主页/应用页

    打开华为应用市场主页:https://appgallery.huawei.com/#/Apps 查看网页源代码
    在这里插入图片描述

    发现数据是动态Ajax异步加载渲染出来的 ,因为我们要爬取APP 名称和介绍,所以随便点开一个应用并且打开F12开发者工具,发现网页数据是由动态Ajax请求生成的数据。
    在这里插入图片描述

    地址1:

    https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTemplate&serviceType=20&zone=&locale=zh_CN

    地址2:

    https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app%7CC101026329&shareTo=&currentUrl=https%253A%252F%252Fappgallery.huawei.com%252F%2523%252Fapp%252FC101026329&accessId=&appid=C101026329&zone=&locale=zh_CN

    通过对响应体分析 发现地址2中存在我们想要的数据 即app 名称和介绍
    他们分别在这里
    在这里插入图片描述
    在这里插入图片描述

    通过对地址2的分析,发现需要传这些参数,其中后三项是和appid有关的,所以为了得到地址2的链接 我们还要获取appid这一参数。
    在这里插入图片描述

    2.分析appid

    返回上一级页面 随便点击一个分类 (我点的:实用工具),发现产生了一个Ajax请求,在左侧搜索 appid 结果指向了这个接口:

    https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&uri=8e62cf6d238c4abdb892b400ff072f43&maxResults=25&zone=&locale=zh_CN

    在这里插入图片描述

    我们查看这个json包 ctrl+f搜索appid 发现搜索到了24个结果。
    在这里插入图片描述

    好,我们可以通过这个json包找到appid了,但是这个接口怎么得到呢?手动吗?不是的。通过分析 发现这个url地址关键参数是 uri,我认为这个uri应该是子分类的标识。
    在这里插入图片描述

    那么好了,我们去获得uri便是。

    3.分析uri

    回到主页面https://appgallery.huawei.com/#/Apps 刷新后搜索uri 看下。左侧得到好多结果,通过对比uri发现这个是我们要的(因为此uri和之前的相互对应)。参数里

    地址:

    https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&uri=b2b4752f0a524fe5ad900870f88c11ed&maxResults=25&zone=&locale=zh_CN

    上面的json格式字符展开之后就能看到所有子分类的uri。
    在这里插入图片描述
    ps:这里面有个坑,所有小分类都是以 热门 开始的,只有 拍摄美化 里面没有热门,在提取uri时要注意。

    好,既然找到了所有分类的入口,就可以从这里开始。我们的思路就是:获取uri–>获取appid–>解析app详情页。

    四.撰写爬虫

    import requests
    import json
    import random
    from concurrent.futures import ThreadPoolExecutor
    import pymongo
    
    class HuaWei_appPrase(object):
        def __init__(self):
            # MONGODB 主机名
            host = "127.0.0.1"
            # MONGODB 端口号
            port = 27017
            client = pymongo.MongoClient(host=host, port=port)
            # 指定数据库
            dbname='HuaWei'
            sheetname='HuaWei_apps'
            mydb = client[dbname]
            self.post = mydb[sheetname]
            self.headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
    
        #获取uri 即每个分类的标识
        def get_uri(self):
            fujia = '0b58fb4b937049739b13b6bb7c38fd53'
            all_tab_uri = list()
            result = list()
            for i in range(2):
                if i == 0:
                    url = 'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&uri=b2b4752f0a524fe5ad900870f88c11ed&maxResults=25&zone=&locale=zh_CN'
                else:
                    url = 'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&uri=56a37d6c494545f98aace3da717845b7&maxResults=25&zone=&locale=zh_CN'
                r = requests.get(url)
                _json = json.loads(r.text)
                data = _json.get('tabInfo')
                for k in data:
                    tab_ids = k.get('tabInfo')
                    aim = tab_ids[0]
                    tab_id = aim.get('tabId')
                    result.append(tab_id)
                    for e in tab_ids:
                        tab_id1 = e.get('tabId')
                        if tab_id1 not in result:
                            all_tab_uri.append(tab_id1)
                all_tab_uri.append(fujia)
            return all_tab_uri
    
        #获取每个分类里应用的appid
        def get_appid(self,uri):
            n=1
            #死循环,当layoutData为空时,停止获取appid,即一个类别爬取结束
            while True:
                url=f'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum={n}&uri={uri}&maxResults=250&zone=&locale=zh_CN'
                r=requests.get(url,headers=self.headers)
                _json=json.loads(r.text)
                data1=_json.get('layoutData')
                if len(data1)!=0:
                    for app in data1:
                        datalist=app.get('dataList')
                        for data in datalist:
                            appid=data.get('appid')
                            yield appid
                    n += 1
                else:
                    break
    
        #解析主程序,用于解析每个app的name和introduce
        def parse(self,appid):
            item={}
            url=f'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app%7C{appid}&shareTo=&currentUrl=https%253A%252F%252Fappgallery.huawei.com%252F%2523%252Fapp%252F{appid}&accessId=&appid={appid}&zone=&locale=zh_CN'
            r=requests.get(url,headers=self.headers)
            r.encoding='utf-8'
            _json=json.loads(r.text)
            data=_json.get('layoutData')
            aim_appname=data[1]
            datalist1=aim_appname.get('dataList')
            for data1 in datalist1:
                item['app_name']=data1.get('name')
            #通过分析发现 app_intro 在dataList里面 但是有的在[6] 有的在[7],所以要加判断
            flag1=data[7]
            datalist=flag1.get('dataList')
            for data2 in datalist:
                app_intro=data2.get('appIntro')
                if app_intro :
                    item['app_intro'] = app_intro.replace('\n','').replace('\r','').replace('\t','')
                else:
                    flag2 = data[6]
                    datalist2 = flag2.get('dataList')
                    for data2 in datalist2:
                        app_intro2 = data2.get('appIntro')
                        item['app_intro']=app_intro2.replace('\n','').replace('\r','').replace('\t','')
            #将得到的数据插入到数据 使用insert方法(先将数据转为字典类型)
            data=dict(item)
            if data:
            	#在入库前判断是都存在此item(根据item出现次数判断)
                data_count = self.post.count_documents(item)
                if data_count == 0:
                    self.post.insert(data)
                    print(f'\033[30;46m{item}\033[0m')
    
    
    
    #主函数
    def main():
        #线程池,创建四个线程
        pool=ThreadPoolExecutor(max_workers=4)
        huaweiapp_prase=HuaWei_appPrase()
        for uri in huaweiapp_prase.get_uri():
            for appid in huaweiapp_prase.get_appid(uri):
                pool.submit(huaweiapp_prase.parse,appid)
        pool.shutdown()
        print(f'\033[31;44m********************程序结束了********************\033[0m')
    
    
    if __name__ == '__main__':
        main()
    
    

    控制台一直在输出数据,直到结束。
    程序运行

    五.得到数据

    我将数据存储到了mongodb,诸位可自行选择存储方式。

    在这里插入图片描述
    心满意足地得到了数据,四万多条,很开心!包括所有应用和游戏的应用信息!

    六.总结:

    • 本次爬取的是华为应用商店所有app名称和介绍,此网页全部是由动态ajax异步加载后渲染生成的,重点应该在如何构造ajax请求的url,实践证明我的思路没有问题。此网站没有封ip、封设备等反爬措施,但是出于安全考虑,我还是加入了请求头。思路、代码方面有什么不足欢迎各位大佬指正、批评!
    展开全文
  • 「好车网APP」有安卓端和苹果端两个版本苹果端如何下载好车网APP?...华为手机用户可以在华为应用市场(HUAWEI AppGallery)中搜索“康正好车网”进行下载,点击“安装”,安装完成后可直接打开《好车网》A...

    978277b00feaead4019442b439e4486e.gif

    0ea46e6ae19e0f49afbf99d0507e579a.png

    「好车网APP」有安卓端和苹果端两个版本

    苹果端如何下载好车网APP?

    手把手教你玩转

    1

    2f45dfb0f5c12a656033021631e735cf.png开App Store苹果商店👇

    83fad2f8cc158ad7c05939adbc305bb9.png

    2

    2f45dfb0f5c12a656033021631e735cf.png在App Store内搜索【康正好车】,点击下载👇

    66e196ccb91ed8e5cb045e8980c37988.png

    3

    2f45dfb0f5c12a656033021631e735cf.png下载完毕后点【打开】,即可进入APP👇

    8b36429bcd11a80df6cda6f36b18b0ee.png

    4

    2f45dfb0f5c12a656033021631e735cf.png进入APP主界面,开始玩转好车网吧d25e5fdc7dd02031d3ede5d8d1d6aa2a.png👇

    a46a3efc9d9f619bb3dcabff5b09daa6.png

    c57776ee6cefadbfe67ad57a1426b721.png

    华为手机用户可以在华为应用市场(HUAWEI AppGallery)中搜索“康正好车网”进行下载,点击“安装”,安装完成后可直接打开《车网》APP。

    db57542764d16362c58cc4059175dd39.png

    901b3eab9d2f679cb625d7adce567916.gif

    腾讯应用宝下载方法

    901b3eab9d2f679cb625d7adce567916.gif

    安卓系统:腾讯应用宝,搜索康正好车网,即可免费下载。

    e1d0a4f4341bef3fb9d109195d022031.png

    vivo下载方法

    d00f860e4ad52c0ea2c21384e0c67d28.png

    第一步:vivo应用商店搜索 康正好车网

    3d7e2c4a49a8f98c66fd7d630c43b1bd.png

    d00f860e4ad52c0ea2c21384e0c67d28.png

    第二步:点击打开,出现如下图界面

    77bdea651e4b29a5b39b547ed0a952a3.png

    d00f860e4ad52c0ea2c21384e0c67d28.png

    第三步:点击下载,下载完成打开登录即可

    3ecb4e1e556b6da103b6d46c546162a6.png

    oppo下载方法

    d00f860e4ad52c0ea2c21384e0c67d28.png

    第一步:oppo应用商店搜索 康正好车网

    f49b6d501797bb52051eca1cbff73178.png

    d00f860e4ad52c0ea2c21384e0c67d28.png

    第二步:点击安装,出现如下图界面,点击允许

    c7bdc9deae190cb804c5b4d735b683b9.png

    d00f860e4ad52c0ea2c21384e0c67d28.png

    第三步:下载完成打开,出现如下界面点击同意,进入App后,点击注册或登录即可

    97ccc0e1add752cd9a6355474eab88a3.png

    0a5382b4bd3ad3e4b538800608a7175b.png

    506534af69d1970b0b7a7bc3f3832bf7.png

    展开全文
  • app应用市场下载统计攻略

    千次阅读 2018-11-22 15:14:39
    当我们开发一款应用时同时需要上架这些市场渠道,上架之前我们有一个很重要的工作要做,就是打渠道包,给每个市场打一个渠道包,这样才能统计各个市场app下载安装的情况。 打渠道包的方式很多,比如 原始渠道打包...

    目前安卓主流的应用市场有 应用宝、360手机助手、百度手机助手、华为应用市场、小米应用商店、vivo应用商店、三星应用商店、阿里分发市场、安智市场,91助手 。当我们开发一款应用时同时需要上架这些市场渠道,上架之前我们有一个很重要的工作要做,就是打渠道包,给每个市场打一个渠道包,这样才能统计各个市场app下载安装的情况。

    打渠道包的方式很多,比如 原始渠道打包直接在代码中设置channelId,还有多渠道打包方式 Andrid Gradle Plugin 、Apk Tool 、AXML解析器等,大家可以根据自己需要来选择打包方式,打完渠道包后,我们把渠道包上传到各个应用市场。说到这里还有一个工作我们不能忘了 就是客户端需要把渠道码通过接口发送给服务端,服务端接受到渠道码后需要进行统计,运营人员通过后台查看所有应用市场的下载安装数据。

    下面推荐一个实用的应该市场下载统计工具 openinstall , openinstall 提供了快速导出渠道包的功能。

    下面总结了几点用 openinstall 应用市场数据统计的特性:

    第一、只需要上传一个渠道到平台,然后直接导出相应的应用市场渠道包。
    第二、服务端不需要做统计工作,平台提供了详细的数据进行查看。
    第三、支持自定义效果统计,除了统计下载安装量 还可以统计每个市场的注册量,充值金额等。

    示例图:
    app应用市场下载统计攻略

    示例图里面的访问量 和点击量 在这里也给大家介绍一下,如果是其它渠道统计,比如地推都是有个h5的落地页,用户通过二维码或者链接访问了落地页 这里的访问量就会加1,如果点击了落地页上面的下载按钮,点击量就会加1。同时也给每一个渠道都有一个单独的数据报表,方便地推团队查看每次地推活动的推广数据。

    示例图:
    app应用市场下载统计攻略

    以上示例图是部分数据报表截图,更多详细的数据 登录openinstall 官方平台进行查看吧。

    转载于:https://blog.51cto.com/14086193/2320524

    展开全文
  • 华为应用市场名称问题

    千次阅读 2016-12-30 02:45:38
    华为应用市场上传应用要求应用app名称与在市场显示名称一致,可是江苏移动在市场上显示的是江苏移动掌上营业厅,但下载安装后在手机上显示的是掌上营业厅,这是怎么做到的,请各位大神释疑。
     华为应用市场上传应用要求应用app名称与在市场显示名称一致,可是江苏移动在市场上显示的是江苏移动掌上营业厅,但下载安装后在手机上显示的是掌上营业厅,这是怎么做到的,请各位大神释疑。
    
    展开全文
  • 华为应用市场要求上传的应用APP名称必须与其在市场市场上展示名称一致,可是江苏和河南移动,他们在市场上显示的都是江苏移动掌上营业厅(河南移动掌上营业厅),但下载安装后在手机上都是掌上营业厅。请问大神,这是...
  • 第一种,就是上架苹果应用市场,即Appstore。这就是最正规的app才可以上架,但上架过程有些漫长,要求比较严格;第二,超级签名:添加苹果手机udid,打包安装(最多安装100台),这种安装方式主要依靠个人开发者账号...
  • 华为应用市场AppGallery Connect自2019年4月全新改版上线以来,已陆续为160多万开发者开放了67项服务,覆盖全球170多个国家和地区。本文中,让我们来探讨AppGallery Connect分发服务,如何帮助您的应用和游戏精准触...
  • apk不是应用市场下载的,华为手机安装的时候看到提示该应用已病毒或者包含不良信息一脸懵,开发过那么多app都没遇到过这种问题,由于项目是接手的,完全不知道加载了什么第三方库,并且只有华为手机会检测到病毒,...
  • appium练习---华为app

    千次阅读 2019-07-27 17:18:58
    找到一个安卓设备(没有可以向朋友借用一下) 安装华为应用市场apk,可以点击这里下载老版本安装,老版本安装运行后,不要选择更新到新版本。 进入排行页面,滚动到 口碑最佳 部分 打印出所有 口碑最佳 部分的5个...
  • 即使知道了,好多人还是不会用,只会打开应用市场下载安装录屏APP。其实,手机自带的录屏是最好用的,比如华为手机的录屏,我最近才发现,它真的太强大了。华为手机自带录屏强在什么地方呢?首先,由于它是系统...
  • 华为应用市场AppGallery Connect应用一站式服务平台正式发布移动端App,帮助您随时随地查看应用信息,获取运营分析数据,接收重要消息通知,快速回复用户评论等,提升应用的运营管理效率,更便捷地掌握应用表现。...
  • 上网找了半天解决方法,都说下载后的APP移动到文件管理-本地-内部储存-Download-browser-安装包,之后再去应用市场-管理-安装包管理去安装 结果试了半天都不行。。。。。。最后 换了谷歌浏览器重新输入网址进行...
  • 微信小程序的出现,给用户和手机商家都带来了变化,不仅支付宝也推出小程序,谷歌谷歌也在推广一种全新的“实时软件”(Instant Apps)技术,让手机软件无需下载安装就能快速启动、运行。前段时间小编发现手机上更新了...
  • 今天小编将告诉大家,在我们的华为手机中,其实是可以帮我们找回曾经安装在手机中的软件的,就让我们一起看看吧~一、华为应用市场如果大家被删除的软件是在华为手机自带的应用市场中下载的话,那我们就可以轻松的...
  • toast("安装应用失败,请到应用市场下载或者文件夹重新安装"); return; } Intent intent = new Intent(Intent.ACTION_VIEW); Uri apkFileUri = FileProvider.getUriForFile(getApplicationContext(), ...
  • 03-01V1.11、系统升级后,旧版本APP将停止服务,请用户卸载旧版本APP后,登陆应用市场(Android用户请前往华为、腾讯、OPPO应用市场,苹果用户请前往苹果应用市场)下载安装新版本APP;2、系统升级后,对四级(不含四级...
  • 江苏税务APP上线啦面向纳税人和缴费人服务于企业和自然人提供72项高频业务功能今天就来介绍发票查验功能一、下载并注册江苏税务APP1、目前“江苏税务”APP已陆续在各应用市场上架,用户可在华为应用市场、小米应用...
  • 安卓手机桌面透明便签App小工具,可使用敬业签云便签。...一、通过手机应用市场或者应用商店下载安装敬业签App,登录账号后添加便签内容,并为其设置定时提醒时间;二、添加完成后返回手机桌面,以安卓华为手机...
  • 您如果未经授权将VirtualApp用于内部使用、商业牟利或上传应用市场,我们将取证后报警(侵犯著作权罪)或起诉,这将对您所属公司造成刑事责任及法律诉讼,影响到您公司的商誉和投资。购买商业授权为您节省大量开发、...
  • 前几天,更新APP版本,APP应用宝上架后,在华为手机和公司其他测试机上可以正常下载安装没有问题,但是在魅族机上却提示安装失败,软件包已损坏,想了很多种可能,像文件残留等,但是都没有效果,最终发现原因是...
  • 应用基于手机厂商自有的硬件和系统,用户无需下载安装APP,就能实现即点即用。有分析认为,快应用的目标直指小程序。“移动互联网市场趋于饱和,硬件设备保有量增速显著放缓,用户增长红利逐步消失,市场开始进入....
  • 开始之前,开发者需先下载安装如下工具: HBuilderX:官方IDE下载地址 HBuilderX是通用的前端开发工具,但为uni-app做了特别强化,请下载App开发版。 由于截图在 github 不便浏览,参见官方文档 HBuilderX 可视化...
  • 6月26日起华为Mate 10系列手机已率先支持,在华为应用市场下载,即可免费限时尝鲜。除了华为Mate 10系列之外,华为P20/P20 Pro及华为Mate RS也均支持。华为云电脑是如何让手机变电脑的呢华为在云端上提供一个安装好...
  • 手机端常规测试

    2020-11-28 18:00:42
    从不同的应用市场下载进行安装测试(小米市场,华为市场,应用宝,安卓市场,等等) 软件升级测试 当客户端有新版本时,是否有更新提示 当版本非强制升级版时,用户可以取消更新,老版本能正常使用,用户在下次启动...
  • 什么是微信小程序

    2018-05-01 18:04:27
    有智能手机,安装过美团APP,跑到应用市场华为),搜索美团APP,点击下载,点击安装,注册,才可以使用。30M。相反,搜索:下载,点击安装,使用;很快,很方便的一种APP;运行为微信上。微信很大的载体。操作系统...
  • [应用市场]应用市场整体升级,提供应用下载安装相关说明,提供对应用评论打分的功能 [系统架构]服务器身份可以调用前端服务 [系统架构]options响应头更新 [系统架构]后台优先连接到本地服务器 [系统架构]页面缓存...
  • 第4章 赚钱的市场——Android Market及应用发布 35 4.1 Google Market产生背景与目的 35 4.2 体验“选货”的乐趣——在G1上体验Market的使用 35 4.3 Android开发活动及特色应用 37 4.3.1 开发应用的领域 37 ...
  • 软件工程教程

    2012-07-06 23:10:29
    开发通用应用(Android Market或者其他App Market销售) 游戏开发(Android Market或者其他App Market销售)。 国内Android开发行业市场现状 第一类开发者 在较大的公司,为自有品牌或者其他品牌设计手机或者平板...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

华为应用市场app下载安装