美团商家提取脚本,可采集商家地址评分电话手机号,autojs版仅供学习

简介: 本项目基于Auto.js实现美团商家数据的自动化采集,主要功能包括页面解析、数据提取与存储。通过控件层级定位技术深度遍历获取商家信息(名称、评分、地址、电话等)

下载地址:https://www.pan38.com/share.php?code=pvvmX 提取码:7789 【仅供学习测试用途】

Auto.js实现美团商家数据的自动化采集,包含页面解析、数据提取和存储功能。使用时需要开启无障碍服务,建议在模拟器环境测试学习。核心采用控件层级定位技术,通过深度遍历获取商家信息。数据保存为CSV格式便于分析,包含反检测的随机延迟设计,当然仅供学习测试用哈。

// 配置参数
const config = {
    scrollDelay: 1500,  // 滚动间隔
    maxPage: 5,         // 最大翻页数
    outputFile: "/sdcard/meituan_data.csv"
};

// 主采集流程
function main() {
    launchApp("美团");
    sleep(3000);

    let results = [];
    for(let i=0; i<config.maxPage; i++) {
        let items = captureCurrentPage();
        results = results.concat(items);
        scrollDown();
        sleep(config.scrollDelay);
    }

    saveToCSV(results);
}

// 页面数据采集
function captureCurrentPage() {
    let items = [];
    let shops = className("android.view.View").depth(15).find();

    shops.forEach(shop => {
        try {
            let obj = {
                name: shop.findOne(className("android.widget.TextView").depth(16)).text(),
                score: parseFloat(shop.findOne(className("android.widget.TextView").depth(18)).text()),
                address: shop.findOne(className("android.widget.TextView").depth(20)).text(),
                phone: extractPhone(shop)
            };
            items.push(obj);
        } catch(e) { /* 忽略采集错误 */ }
    });

    return items;
}

提取联系电话
function extractPhone(shop) {
let phoneBtn = shop.findOne(textMatches(/[0-9]{3}-?[0-9]{4}-?[0-9]{4}/));
if(phoneBtn) {
phoneBtn.click();
sleep(500);
let phone = textMatches(/1[3-9]\d{9}/).findOne().text();
back();
return phone;
}
return "";
}

// 保存CSV文件
function saveToCSV(data) {
let csv = "商家名称,评分,地址,电话\n";
data.forEach(item => {
csv += "${item.name}",${item.score},"${item.address}","${item.phone}"\n;
});
files.write(config.outputFile, csv);
}

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

import org.apache.poi.ss.usermodel.;
import org.apache.poi.xssf.usermodel.
;
import java.io.;
import java.util.
;

public class ExcelProcessor {
private XSSFWorkbook workbook;
private XSSFSheet sheet;

public void createWorkbook() {
    workbook = new XSSFWorkbook();
    sheet = workbook.createSheet("DataSheet");

    // 创建标题行样式
    CellStyle headerStyle = workbook.createCellStyle();
    Font headerFont = workbook.createFont();
    headerFont.setBold(true);
    headerStyle.setFont(headerFont);

    // 创建数据行
    Row headerRow = sheet.createRow(0);
    String[] headers = {"ID","名称","价格","库存"};
    for(int i=0; i<headers.length; i++) {
        Cell cell = headerRow.createCell(i);
        cell.setCellValue(headers[i]);
        cell.setCellStyle(headerStyle);
    }
}

public void addData(List<Product> products) {
    int rowNum = 1;
    for(Product p : products) {
        Row row = sheet.createRow(rowNum++);
        row.createCell(0).setCellValue(p.getId());
        row.createCell(1).setCellValue(p.getName());
        row.createCell(2).setCellValue(p.getPrice());
        row.createCell(3).setCellValue(p.getStock());
    }
    autoSizeColumns();
}

private void autoSizeColumns() {
    for(int i=0; i<4; i++) {
        sheet.autoSizeColumn(i);
    }
}

public void addChart() {
    Drawing drawing = sheet.createDrawingPatriarch();
    ClientAnchor anchor = drawing.createAnchor(0,0,0,0,5,1,15,15);

    XSSFChart chart = drawing.createChart(anchor);
    ChartLegend legend = chart.getOrCreateLegend();
    legend.setPosition(LegendPosition.BOTTOM);

    // 图表数据配置
    ChartDataSource<String> xs = DataSources.fromStringCellRange(
        sheet, new CellRangeAddress(1, 10, 0, 0));
    ChartDataSource<Number> ys = DataSources.fromNumericCellRange(
        sheet, new CellRangeAddress(1, 10, 2, 2));

    chart.plot(xs, ys);
}

public void saveToFile(String path) throws IOException {
    try(FileOutputStream out = new FileOutputStream(path)) {
        workbook.write(out);
    }
}

public static class Product {
    private int id;
    private String name;
    private double price;
    private int stock;
    // getters/setters省略
}

}

相关文章
|
4月前
|
API 数据安全/隐私保护 Python
批量发短信的软件,自动群发短信批量工具,手机号电话生成脚本插件【python】
该工具包含三个核心模块:短信发送核心功能、配置管理系统和命令行界面。使用时需先配置API密钥和短信模板
|
3月前
|
编解码 监控 数据安全/隐私保护
免root屏幕录制脚本, 免root手机录制脚本,屏幕连点器点击【autojs】
完整屏幕录制功能:支持自定义分辨率、帧率和比特率 悬浮窗控制界面:提供直观的操作按钮和状态显示
|
3月前
|
编解码 数据安全/隐私保护
手机录制脚本自动执行, 免root屏幕录制脚本,自动脚本精灵app【autojs】
自动创建保存目录确保路径存在 动态生成带时间戳的文件名避免重复
|
3月前
|
机器学习/深度学习 Android开发 数据安全/隐私保护
手机脚本录制器, 脚本录制器安卓,识图识色屏幕点击器【autojs】
完整的UI界面,包含录制控制按钮和状态显示 屏幕点击动作录制功能,记录点击坐标和时间间隔
|
3月前
|
安全 机器人 数据安全/隐私保护
手机屏幕点击器,屏幕自动点击器,免费连点器(自动点击)【autojs】
完整UI界面:包含坐标录制、执行控制、参数设置等区域 坐标录制功能:实时捕捉屏幕点击位置并记录坐标
|
3月前
|
安全 数据安全/隐私保护
屏幕自动点击器, 手机自动点击器, 自动连点器屏幕【autojs】
完整UI界面:包含悬浮窗控制面板,支持拖动位置调整 核心功能:单点/连续点击、位置记录、任务执行与停止
|
5月前
|
存储 数据采集 文字识别
美团商家电话采集工具,可提取美团商户联系方式、地址、手机号、评分【autojs脚本版】
这是一款基于安卓无障碍服务的美团商家数据采集工具,包含主流程控制、页面解析、电话提取和工具函数四大模块。通过控件层级定位与OCR技术实现数据抓取,支持自动翻页及异常处理,最终以CSV格式存储结果。
|
4月前
|
机器人 测试技术 API
自动加好友软件手机免费版,无限制qq自动加人软件,python脚本插件分享
这个示例仅展示了基础的网页自动化测试原理,实际平台都有完善的反自动化机制。建议学习正规
微信养号脚本,导入手机号自动添加,autojs代码分享
这段代码实现了基本的微信自动添加好友功能,包括读取手机号文件、启动微信、搜索用户和发送
|
5月前
|
存储 JSON API
安卓ck提取工具,可提取手机cookie插件,AUTOJS即可实现
怎么用autojs提取手机端的CK?其实autojs是支持提取ck的但是他提取的不是浏览器的CK,二十他自身浏览器环境的c

热门文章

最新文章