【问题标题】:Generating test data - how to generate a valid address for a given US zipcode?生成测试数据 - 如何为给定的美国邮政编码生成有效地址?
【发布时间】:2018-04-03 20:53:15
【问题描述】:

我正在创建一个依赖于地址的工具。出于测试目的,我想创建大量有效的美国地址。我有GeoNames postal code data,我想为美国大约 41,000 个邮政编码中的每一个生成一些真实地址。

我发现像 FakeAddressGeneratorFakeName 这样的网站声称可以生成随机、有效的美国地址。这些网站是如何运作的?我怎样才能在不依赖抓取这些网站的情况下做同样的事情?

理想情况下,我希望能够在 Python 中做到这一点;使用网络服务很好(看起来 FakeAddressGenerator 或 FakeName 都没有提供这样的网络服务)。

谢谢!

【问题讨论】:

  • 欢迎来到 StackOverflow。请按照您创建此帐户时的建议阅读并遵循帮助文档中的发布指南。 On topichow to ask 在这里申请。 StackOverflow 不是设计、编码、研究或教程服务。
  • 对我来说似乎是“软件开发独有的实用、可回答的问题”。
  • 你应该使用faker库
  • @BurakÖztürk 关于伪造库的问题是它不能保证地址是真实的。
  • 测试中对有效地址的需求是什么?你不能模拟数据或响应吗?

标签: python street-address data-generation


【解决方案1】:

搜索您的问题,我发现了 2 个感兴趣的链接:

  1. https://github.com/EthanRBrown/rrad 提供大约 3200 个真实的匿名地址。
  2. https://openaddresses.io 还提供了指向其开源 github 的链接,其中包含完整的数据集。

我不建议抓取虚假地址生成器,因为它们不能保证存在。我也不会去谷歌地图取样,因为你肯定会被列入黑名单。

从 2 中下载的 zip 文件中提取数据很容易:它们是包含 csv 文件的 zip 文件,其中包含完整地址、zip、lat、lon 等...

以上两个数据集“保证”了地址的存在。我不知道您的其他条件有多难,即 41k 邮政编码中的 每个 至少有一个有效地址。如果这是一个硬约束,我怀疑你会得到这样的数据集开源。


编辑:

如果您有一份美国所有邮政编码的列表,一个完全自动化的解决方案是使用名为 nominatim of openstreetmap 的服务(取决于他们的 TOC!)

1) 获取每个邮政编码的纬度、经度(中心点或默认地址):

https://nominatim.openstreetmap.org/search/?format=xml&addressdetails=1&limit=1&country_codes=us&postalcode=35051

2) 获取这个lat、lon的相关地址:

https://nominatim.openstreetmap.org/reverse?format=xml&lat=33.178764&lon=-86.619038&zoom=18&addressdetails=1

在阿拉巴马州的 Columbiana(邮政编码 35051)尝试这个示例会产生 397 West College Street。

Nominatim 文档位于:https://wiki.openstreetmap.org/wiki/Nominatim

【讨论】:

  • 这几天我没有机会尝试这个,但看起来你已经找到了解决我的 nominatim 问题的完美解决方案!几天后我会跟进并奖励赏金。
【解决方案2】:

你可以安装随机地址:

pip install random-address

然后使用random_address.real_random_address_by_postal_code:

>>> import random_address
>>> random_address.real_random_address_by_postal_code('32409')
{'address1': '711 Tashanna Lane', 'address2': '', 'city': 'Southport', 'state': 'FL', 'postalCode': '32409', 'coordinates': {'lat': 30.41437699999999, 'lng': -85.676568}}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-07-01
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 2013-10-09
  • 2012-11-09
相关资源
最近更新 更多