python控制appium打开微信,并采集拼夕夕之多多买菜数据,供应学习,干货太多。
序言
python控制appium来采集电商数据越来越流行。拼夕夕之多多买菜数据非常难采集,他们用到了云函数,反爬也相当厉害。
郑重说明
我们研究技术只为了正常收集数据和分析数据。切勿攻击服务器,切勿违法互联网法律法规。一下代码仅供学习和研究。
用python控制appium打开微信代码如下:
from appium.webdriver import Remote # 引入打开软件的包
# app的启动参数
desired_cap = {
"platformName": "Android", # 手机系统
"platformVersion": "9", # 手机系统版本
"deviceName": 'HUAWEI', # 手机的名字,不会进行校验,但是没有会报错
"automationName": "UiAutomator2", # 自动化测试框架 (1.4以上的appium不用写)
"appPackage": "com.tencent.mm", # app包名
"appActivity": ".ui.LauncherUI", # app的启动页面
}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=desired_cap)
启动代码如下:
# coding=utf-8
import json
import os.path
from os import system
from multiprocessing import Pool
import time
from base.base_api import BaseApi
from base.base_root import BaseRoot
from po.bangdanwechat_page import BangDanWechatPage
from po.ddmcwechat_page import DdmcWechatPage
def main(device_info):
print(f"###########################################{device_info} start#########################################")
showtime = time.strftime('%Y-%m-%d', time.localtime(time.time()))
batchtime = time.time()
curpath = BaseRoot.root_path
folder = f"/log/{showtime}/"
if not os.path.exists(curpath + f'/{folder}/'):
os.makedirs(curpath + f'/{folder}/')
########调接口 请求要采集的货仓数据########
'''
warehouseName: 新疆
warehouseCode: 650000000000
warehouseSonName: 乌鲁木齐
warehouseSonCode: 650100000000
'''
biaoshi = input("请输入本地标示 例如:新疆-乌鲁木齐:")
if len(biaoshi) == 0:
biaoshi = input("请输入本地标示 例如:新疆-乌鲁木齐:")
biaoshicontent = biaoshi.split('-')
mydict = {}
mydict['warehouseName'] = biaoshicontent[0]
mydict['warehouseSonName'] = biaoshicontent[1]
response_text = BaseApi.getFetchConfigData(mydict)
biaoshi_dict = json.loads(response_text)
fetch_address = json.loads(biaoshi_dict['data']['fetch_address'])
fetch_cates = json.loads(biaoshi_dict['data']['fetch_cates'])
'''
{'code': 0, 'msg': 'success', 'time': '1679644488', 'data': {
'fetch_address':
'{"shop": "客人店",
"warehouseCode": "650000000000",
"warehouseName": "新疆",
"warehouseSonCode": "650100000000",
"warehouseSonName": "乌鲁木齐"}',
'fetch_cates':
'{ "上新": 1, "百货": 1, "洗护": 1, "花卉": 1, "电器": 1 }'}}
'''
####存标示#####
biaoshi_json = {}
sava_path_dir = curpath + folder + f'{device_info}-biaoshi-{biaoshi}.json'
if not os.path.isfile(sava_path_dir):
'''
warehouseName = input("请输入货仓省份 例如:新疆:")
warehouseSonName = input("请输入货仓地区 例如:乌鲁木齐:")
warehouseCode = input("请输入省份码 例如:650000000000:")
warehouseSonCode = input("请输入货仓地区码 例如:650100000000:")
downfenlei = input("请输入下载的分类 例如:{\"上新\": 1, \"百货\": 1, \"洗护\": 1, \"花卉\": 1, \"电器\": 1}:")
down_cates = json.loads(downfenlei)
'''
warehouseName = fetch_address['warehouseName']
warehouseSonName = fetch_address['warehouseSonName']
warehouseCode = fetch_address['warehouseCode']
warehouseSonCode = fetch_address['warehouseSonCode']
down_cates =fetch_cates
print(warehouseName)
print(warehouseSonName)
print(warehouseCode)
print(warehouseSonCode)
biaoshi_json['warehouseName'] = warehouseName
biaoshi_json['warehouseSonName'] = warehouseSonName
biaoshi_json['warehouseCode'] = warehouseCode
biaoshi_json['warehouseSonCode'] = warehouseSonCode
biaoshi_json['down_cates'] = down_cates
json.dump(biaoshi_json, open(sava_path_dir, 'w'), indent=4)
else:
with open(sava_path_dir, 'r', encoding="utf-8") as f:
biaoshi_json = json.load(f)
warehouseName = biaoshi_json['warehouseName']
warehouseSonName = biaoshi_json['warehouseSonName']
warehouseCode = biaoshi_json['warehouseCode']
warehouseSonCode = biaoshi_json['warehouseSonCode']
down_cates = biaoshi_json['down_cates']
####存标示#####
########调接口 请求要采集的货仓数据########
#bangdan_json ={"xiaoliangbang":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0}
#目前只采集新品榜
bangdan_json ={"4":0}
sava_path_dir = curpath + folder + f'{device_info}-bangdan-{warehouseName}-{warehouseSonName}.json'
if not os.path.isfile(sava_path_dir):
json.dump(bangdan_json, open(sava_path_dir,'w'), indent=4)
else:
with open(sava_path_dir, 'r', encoding="utf-8") as f:
bangdan_json= json.load(f)
BangDanWechatPage(device_info).run(bangdan_json,sava_path_dir,batchtime,warehouseName,warehouseSonName,warehouseCode,warehouseSonCode)
print(f"###########################################{device_info} end#########################################")
time.sleep(10)
print(f"###########################################分类采集开始#########################################")
caiji_json ={"tuijian":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0}
sava_path_dir = curpath + folder+ f'{device_info}-products-{warehouseName}-{warehouseSonName}.json'
if not os.path.isfile(sava_path_dir):
json.dump(caiji_json, open(sava_path_dir,'w'), indent=4)
else:
with open(sava_path_dir, 'r', encoding="utf-8") as f:
caiji_json= json.load(f)
#down_cates = {"上新": 1, "百货": 1, "洗护": 1, "花卉": 1, "电器": 1}
DdmcWechatPage(device_info).run(caiji_json,sava_path_dir,down_cates,batchtime,warehouseName,warehouseSonName,warehouseCode,warehouseSonCode)
return "ok"
if __name__ == '__main__':
device_info = input("请输入设备 例如:62001:")
system(f"title {device_info}")
main(device_info)
注意事项:项目代码只是为了大家共同学习和共同进步,技术在正直人手里可以改变世界,技术在不法之人手里会危害世界。我们一定要遵纪守法。
以上代码百分百原创,喜欢可以私信。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)