美团外卖商家数据采集软件,提取电话号手机号评分地址,销量评价内容【autojs版】

简介: 这是一款基于AutoJS开发的美团外卖商家数据采集工具,可自动抓取商家名称、电话、评分、地址、月销量及评价内容等信息。支持多页滚动加载与详细数据采集

下载地址: https://www.pan38.com/share.php?code=pvvmX 提取码:5589

基于AutoJS的美团外卖商家数据采集脚本实现,包含商家信息、评分、地址、销量和评价内容的抓取功能,刚试了一下还能继续采集,因为我开发的时候是上个月,目前对于最新版美团客户端还能正常采集,如果采集不了的话请下载旧版美团客户端绝对就可以了,然后他采集的数据就包括上面那些信息,当然还有其他的我这边就没办法一个个给你打出来,仅供学习。

核心代码:

// 美团外卖商家数据采集工具 - AutoJS版
// 功能:自动采集商家信息、电话、评分、地址、销量和评价内容

"ui";
ui.layout(





);

// 全局变量
let isRunning = false;
let collectedData = [];
const MAX_PAGES = 5; // 最大采集页数

// 主采集函数
function mainCrawler() {
if (!requestScreenCapture()) {
log("请求截图权限失败");
return;
}

launchApp("美团外卖");
sleep(3000);

// 处理可能的弹窗
handlePopup();

// 执行搜索
performSearch();

// 采集商家列表
collectShopList();

// 保存数据
saveData();

}

// 处理弹窗
function handlePopup() {
// 关闭青少年模式弹窗
if (text("我知道了").exists()) {
text("我知道了").click();
sleep(1000);
}

// 关闭位置授权弹窗
if (text("允许").exists()) {
    text("允许").click();
    sleep(1000);
}

}

// 执行搜索
function performSearch() {
let keyword = ui.keyword.getText();
let location = ui.location.getText();

// 点击搜索框
let searchBox = id("com.sankuai.meituan.takeoutnew:id/search_edit").findOne(3000);
if (searchBox) {
    searchBox.click();
    sleep(1000);

    // 输入关键词
    setText(0, keyword);
    sleep(1000);

    // 点击搜索按钮
    let searchBtn = text("搜索").findOne(3000);
    if (searchBtn) {
        searchBtn.click();
        sleep(3000);
    }
}

}

// 采集商家列表
function collectShopList() {
for (let page = 0; page < MAX_PAGES && isRunning; page++) {
log("正在采集第 " + (page + 1) + " 页商家...");

    // 滑动到底部加载更多
    scrollDown();
    sleep(3000);

    // 获取当前页商家元素
    let shops = className("android.view.View").depth(15).find();
    if (shops.empty()) {
        log("未找到商家列表");
        break;
    }

    // 遍历商家
    for (let i = 0; i < shops.length && isRunning; i++) {
        let shop = shops[i];
        let bounds = shop.bounds();

        // 点击进入商家详情
        click(bounds.centerX(), bounds.centerY());
        sleep(3000);

        // 采集商家详情
        let shopData = collectShopDetail();
        if (shopData) {
            collectedData.push(shopData);
            log("成功采集: " + shopData.name);
        }

        // 返回列表
        back();
        sleep(2000);
    }

    // 滑动到下一页
    swipe(device.width / 2, device.height * 0.8, 
          device.width / 2, device.height * 0.2, 500);
    sleep(3000);
}

}

// 采集商家详情
function collectShopDetail() {
let shopData = {
name: "",
phone: "",
score: "",
address: "",
monthlySales: "",
reviews: []
};

// 获取商家名称
let nameElem = id("com.sankuai.meituan.takeoutnew:id/shop_name").findOne(3000);
if (nameElem) shopData.name = nameElem.text();

// 获取评分
let scoreElem = id("com.sankuai.meituan.takeoutnew:id/score").findOne(3000);
if (scoreElem) shopData.score = scoreElem.text();

// 获取月售
let salesElem = id("com.sankuai.meituan.takeoutnew:id/month_sale_num").findOne(3000);
if (salesElem) shopData.monthlySales = salesElem.text();

// 点击查看商家信息
let infoBtn = textContains("商家信息").findOne(3000);
if (infoBtn) {
    infoBtn.click();
    sleep(2000);

    // 获取地址
    let addressElem = textMatches(/地址[::].+/).findOne(3000);
    if (addressElem) shopData.address = addressElem.text().replace(/地址[::]/, "").trim();

    // 获取电话
    let phoneElem = textMatches(/(\d{3}-\d{8}|\d{4}-\d{7}|\d{11})/).findOne(3000);
    if (phoneElem) shopData.phone = phoneElem.text();

    // 返回详情页
    back();
    sleep(2000);
}

// 采集评价
collectReviews(shopData);

return shopData;

}

// 采集评价内容
function collectReviews(shopData) {
// 点击评价标签
let reviewTab = textContains("评价").findOne(3000);
if (reviewTab) {
reviewTab.click();
sleep(3000);

    // 滑动加载更多评价
    for (let i = 0; i < 3; i++) {
        scrollDown();
        sleep(2000);
    }

    // 获取评价元素
    let reviewItems = className("android.view.View").depth(18).find();
    for (let i = 0; i < reviewItems.length; i++) {
        let review = {
            user: "",
            rating: "",
            content: "",
            time

// 数据采集核心功能
function collectShopDetail() {
let shopData = {
name: getShopName(),
phone: getPhoneNumber(),
score: getShopScore(),
address: getShopAddress(),
monthlySales: getMonthlySales(),
reviews: collectReviews()
};
return shopData;
}

function getShopName() {
let elem = id("com.sankuai.meituan.takeoutnew:id/shop_name").findOne(3000);
return elem ? elem.text() : "未知商家";
}

function getPhoneNumber() {
clickShopInfo();
let phone = textMatches(/(\d{3}-\d{8}|\d{4}-\d{7}|\d{11})/).findOne(3000);
back();
return phone ? phone.text() : "未获取";
}

滚动加载实现
function loadMoreReviews() {
let lastPos = 0;
while (true) {
let currentPos = getScrollY();
if (currentPos === lastPos) break;
lastPos = currentPos;
scrollDown();
sleep(2000);
}
}

function getScrollY() {
return className("android.widget.ScrollView").findOne().bounds().top;
}

function scrollDown() {
swipe(device.width/2, device.height0.8,
device.width/2, device.height
0.2, 500);
}

相关文章
|
2月前
|
Java API 数据安全/隐私保护
手机无人直播手机用啥软件,抖音快手无人直播工具,jar代码分享
这个无人直播系统包含视频处理、直播推流和自动化控制三个核心模块。使用mvn package命
|
2月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
2月前
|
存储 API 数据库
自动发短信的软件,批量自动群发短信,手机号电话号生成器【python框架】
这个短信群发系统包含以下核心功能: 随机手机号生成器(支持中国号码) 批量短信发送功能(使用Twilio API)
|
2月前
|
API 数据安全/隐私保护 Python
批量发短信的软件,自动群发短信批量工具,手机号电话生成脚本插件【python】
该工具包含三个核心模块:短信发送核心功能、配置管理系统和命令行界面。使用时需先配置API密钥和短信模板
|
2月前
|
数据安全/隐私保护 计算机视觉 Python
人脸识别图片眨眼生成器,手机制作人脸眨眼张嘴, 代替真人刷脸软件
代码实现了基于面部特征点的人脸动画生成,包括眨眼和张嘴动作。它使用dlib进行人脸检测和特征点定位
|
1月前
|
编解码 监控 数据安全/隐私保护
免root屏幕录制脚本, 免root手机录制脚本,屏幕连点器点击【autojs】
完整屏幕录制功能:支持自定义分辨率、帧率和比特率 悬浮窗控制界面:提供直观的操作按钮和状态显示
|
1月前
|
编解码 数据安全/隐私保护
手机录制脚本自动执行, 免root屏幕录制脚本,自动脚本精灵app【autojs】
自动创建保存目录确保路径存在 动态生成带时间戳的文件名避免重复
|
1月前
|
机器学习/深度学习 Android开发 数据安全/隐私保护
手机脚本录制器, 脚本录制器安卓,识图识色屏幕点击器【autojs】
完整的UI界面,包含录制控制按钮和状态显示 屏幕点击动作录制功能,记录点击坐标和时间间隔
|
1月前
|
安全 机器人 数据安全/隐私保护
手机屏幕点击器,屏幕自动点击器,免费连点器(自动点击)【autojs】
完整UI界面:包含坐标录制、执行控制、参数设置等区域 坐标录制功能:实时捕捉屏幕点击位置并记录坐标
|
1月前
|
安全 数据安全/隐私保护
屏幕自动点击器, 手机自动点击器, 自动连点器屏幕【autojs】
完整UI界面:包含悬浮窗控制面板,支持拖动位置调整 核心功能:单点/连续点击、位置记录、任务执行与停止

热门文章

最新文章