做外贸最费时间的不是谈客户,而是找到对的客户。
光伏支架(PV Mounting / Solar Racking)出口的目标客户,大多是东南亚、欧洲那些做安装与分销的小公司——它们没什么名气、规模不大,却正是最可能下单的人。手工在谷歌地图上一家一家翻,一天也就能整理几十家,还要自己抄电话、翻官网找邮箱。于是我写了这个工具,把整条链路自动化了。
它做什么
一句话流程:
谷歌地图搜索 → 电话 / 网站抓取 → 官网邮箱 + WhatsApp + 领英补全 → 私人手机判定 → 小规模判定 → 导出 Excel / CSV

核心能力
1. 批量搜索 + 完整国家库
内置 217 个国家 / 地区(按 7 大洲分组),支持多语言关键词逐条搜索。在图形客户端里按洲勾选即可,默认不勾选任何国家,避免一不留神跑满全球。
2. 联系方式自动补全
谷歌地图一般不直接给邮箱。工具会访问公司官网首页与常见联系页(/contact、/kontakt、/contacto、/contatti 等),正则提取邮箱并评分,优先返回 info@ / sales@ / contact@ 以及和官网同域名的邮箱;再从官网里找 wa.me 链接拿 WhatsApp,并用搜索定位公司公开的领英主页。
3. 私人手机 vs 企业座机
按可信度判定号码性质:官网出现 wa.me/... 几乎必是私人手机(最高可信);其次是按各国手机号段前缀判定;识别不了的标「未知」交人工。只做号码性质分类,不抓取任何未公开的私人数据。
4. 小规模客户判定
用加权评分给结论,而不是拍脑袋:
| 信号 | 权重 |
|---|---|
| 领英员工数 ≤ 50 / 51–200 | +3 / +2 |
| 领英员工数 > 200 / > 1000 | −3 / −5 |
| 命中光伏大厂品牌(品牌方或分支) | −4 |
| 官网自称上市公司 | −5 |
| 电话是私人手机 / 仅企业座机 | +2 / −1 |
| 官网显示多国 / 全球布局 | −2 |
总分 ≤ −2 判「不是」,其余判「是」并附判定依据与置信度。宁可多留几条标低置信度,也不误杀真客户——导出表按「是」优先排序。
技术栈
Python · Playwright · Flask · SQLite · openpyxl
- Playwright 驱动真实浏览器抓取,配合
.chrome_profile复用登录态,大幅降低验证码与封禁概率; - SQLite 做去重与断点续跑——跑到一半中断,下次接着跑;
- Flask + 图形客户端(
gui.py):双击run_gui.bat就能用,界面上的配置自动写回config.yaml; - 防封参数:指纹伪装、拟人化操作、限速,全部可在
config.yaml里调。
工程结构
pv-mounting-leads/
├── main.py # 编排入口(搜索 → 补全 → 导出)
├── gui.py # 图形客户端
├── config.yaml # 所有目标配置都改这里
└── leadgen/
├── maps_scraper.py # 谷歌地图爬取
├── enricher.py # 官网邮箱 / WhatsApp / 领英补全
├── phone_rules.py # 私人手机 vs 企业座机判定
├── sizer.py # 小规模客户判定
├── store.py # SQLite 去重 + 断点续跑
└── export.py # 导出 CSV / XLSX
一点说明
这是一个自用的生产力工具,不是公开服务——它依赖本地浏览器、登录态和长时运行,并不适合对外提供使用。写它最大的收获,是把「找客户」这件重复劳动真正交给了代码:配置好关键词和国家,剩下的事它自己跑,我只管看表格。
如果你也在做光伏 / 新能源出海,欢迎交流。