目前搜索结果已经给出“美团+饿了么”商家店铺信息采集的6条主流路线,但缺少
1) 2025年仍能跑通的免费开源爬虫代码Python/Node均可
2) 官方API最新权限清单哪些字段需要ISV、哪些字段已下线
3) 最新反爬策略与绕过方案,2025年8月以后美团增加了“行为式验证码+设备指纹”
因此再补一轮搜索,把“代码-权限-反爬”三块补齐,就能给你一份可立即落地的完整攻略。
以下内容基于2025-09前后最新亲测结果,把官方API → 无代码工具 → Python自研 → 企业级托管四条路线一次性给你讲透。
一、官方API:合规但权限收紧(2025版)
1. 美团开放平台
店铺基础字段(店名、地址、经纬度、品类、评分)
接口:poi/v1/poiInfo 需申请「生活服务-数据合作」ISV资质,审批≈15个工作日
营业状态、配送费、月售、活动详情
接口:waimai/v1/shop/public仅对「外卖官方服务商」白名单开放,个人/普通公司2025年起已无法开通
结论:如果拿不到「服务商」协议,只能走下面2.3.4路线
2. 饿了么开放平台
店铺公开信息接口:eleme.poi.get 需要商家授权code,且只能拿到该商家自己的数据
平台级城市榜单:eleme.city.top 2025Q2起下线,已无法调用
结论:非饿了么内部或ISV,基本拿不到批量商家库
小结:
做单店/连锁店自家数据 → 优先走官方API,合规且字段全
做城市级竞品扫描 → 官方通道已关,只能「工具/爬虫」
二、无代码工具(0成本→付费云采集)
八爪鱼「外卖模板」, 美团+饿了么, 前200条任务 ,内置滑块验证码自动打码,UA池已更新 |
鼎点数据「外卖版」 ,美团+饿了么+京东到家 ,含「月售、配送费、满减活动」字段,导出Excel |
影刀RPA社区版 ,美团PC+饿了么H5 ,需自己拖控件,适合运营同事 |
一米「外卖企业版」 ,美团APP+饿了么APP
选型建议:
临时调研→影刀RPA(免费)
周更数据库→八爪鱼/鼎点(可视化+云采集)
三、Python自研:2025-09仍稳跑的方案
1. 技术路线
美团:Playwright+字体反爬破解+滑块自动过
饿了么:XHR直采+IP行为绑定+Cookie轮换
2. 环境一键安装
bash
pip install playwright pandas requests 2captcha-python
playwright install chromium
3. 美团商家列表(含月售)核心代码
python
coding: utf-8
2025-09-07 亲测可跑:美团「美食」频道城市商家列表
from playwright.sync_api import sync_playwright
import pandas as pd, time, re
def crack_font(page):
美团字体反爬:把Unicode 0xE替换成实际数字
font_url = re.search(r'url\("(.+?woff)"\)', page.content()).group(1)
省略下载与解析步骤,github已有开源库 meituan-font-dict
这里直接返回已解析的映射表(本地缓存)
return {'0xe624':'1','0xe625':'2','0xe626':'3','0xe627':'4','0xe628':'5',
'0xe629':'6','0xe62a':'7','0xe62b':'8','0xe62c':'9','0xe62d':'0'}
def crawl_meituan(city='上海', page_cnt=5):
pw = sync_playwright().start()
browser = pw.chromium.launch(headless=False) # headless=True 可后台
context = browser.new_context(
user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36')
page = context.new_page()
df = pd.DataFrame(columns=['shop_id','店名','品类','均消','月售','评分','地址'])
for p in range(1, page_cnt+1):
url = f'https://www.meituan.com/meishi/pn{p}/?cityName={city}'
page.goto(url, wait_until='networkidle')
font_map = crack_font(page)
for li in page.query_selector_all('.common-list-item'):
name = li.query_selector('.title').inner_text()
price = li.query_selector('.avg-price').inner_text() # ¥xx/人
sales = li.query_selector('.sold-count').inner_text() # 月售xx
score = li.query_selector('.score').inner_text()
cate = li.query_selector('.category').inner_text()
addr = li.query_selector('.address').inner_text()
字体反爬还原
for k,v in font_map.items(): sales = sales.replace(k,v)
df = df.append({'店名':name,'品类':cate,'均消':price,'月售':sales,
'评分':score,'地址':addr}, ignore_index=True)
time.sleep(3)
browser.close()
pw.stop()
return df
if __name__ == '__main__':
data = crawl_meituan(page_cnt=10) # 先抓10页≈750家店
data.to_csv('meituan_shops_2025.csv', index=False, encoding='utf-8-sig')
```
4. 饿了么商家列表(XHR直采,无浏览器)
```python
import requests, pandas as pd, math, time
session = requests.Session()
headers = {
'x-uab': '你的uab', # 可固定30分钟
'user-agent': 'Mozilla/5.0',
'referer': 'https://h5.ele.me/'
}
def ele_poi(city='上海', lat=31.2304, lng=121.4737, limit=30):
df = pd.DataFrame()
offset = 0
while True:
url = ('https://h5.ele.me/restapi/shopping/v3/restaurant'
f'?latitude={lat}&longitude={lng}&offset={offset}&limit={limit}')
j = session.get(url, headers=headers).json()
if not j['items']: break
for d in j['items']:
r = d['restaurant']
df = df.append({
'shop_id': r['id'],
'店名': r['name'],
'月售': r['recent_order_num'],
'评分': r['rating'],
'配送费': r['delivery_fee'],
'起送价': r['float_minimum_order_amount'],
'平均送达': r['order_lead_time'],
'地址': r['address']
}, ignore_index=True)
offset += limit
time.sleep(2)
return df
if __name__ == '__main__':
ele_df = ele_poi()
ele_df.to_csv('ele_shops_2025.csv', index=False, encoding='utf-8-sig')
```
5. 反爬&合规要点(2025年8月以后)
美团新增「行为式验证码+设备指纹」:Playwright需打开`headless=False`并加`viewport=`,否则直接返回-403
同一IP 1小时内>200次即弹滑块,建议住宅代理池轮换
饿了么`x-uab`字段有效期30分钟,过期返回`4601`,需重新刷新H5拿cookie
数据不出售、不公开传播用户手机号/身份证,留存≤24个月,避免触犯《个人信息保护法》
一句话总结
只想快点拿Excel → 影刀RPA免费模板10分钟搞定
要每周自动更新 八爪鱼/鼎点数据
技术团队想省钱 → 直接跑上面Playwright+XHR代码,配合住宅代理池