Генерация тестовых данных — как создать действительный адрес для заданного почтового индекса США?

Я создаю инструмент, который зависит от адресов. В целях тестирования я хотел бы создать большое количество действительных адресов в США. У меня есть данные о почтовом индексе GeoNames, и я хотел бы сгенерировать некоторое количество реальных адресов для каждый из ~ 41 000 почтовых индексов в Соединенных Штатах.

Я нашел такие сайты, как FakeAddressGenerator и FakeName, которые утверждают, что генерируют случайные действительные адреса в США. Как работают эти сайты? Как я могу сделать то же самое, не полагаясь на парсинг этих веб-сайтов?

В идеале я хотел бы сделать это на Python; использование веб-службы - это нормально (не похоже, что FakeAddressGenerator или FakeName предоставляют такую ​​​​веб-службу).

Спасибо!


person Joseph    schedule 03.04.2018    source источник
comment
Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по размещению сообщений в справочной документации, предложенным при создании этой учетной записи. По теме и как спросить подать заявку здесь. StackOverflow не занимается проектированием, кодированием, исследованиями или обучением.   -  person Prune    schedule 03.04.2018
comment
Кажется, это практичная проблема, на которую можно ответить и которая уникальна для разработки программного обеспечения.   -  person Joseph    schedule 04.04.2018
comment
Вы должны использовать фальшивую библиотеку   -  person Phd. Burak Öztürk    schedule 27.04.2018
comment
@BurakÖztürk проблема с библиотекой фейкеров в том, что она не гарантирует, что адреса будут реальными.   -  person Lynx-Lab    schedule 27.04.2018
comment
Зачем нужен действующий адрес при тестировании? Разве вы не можете издеваться над данными или ответами?   -  person Tarun Lalwani    schedule 27.04.2018
comment
Я действительно хочу создать фиктивные данные, но я хочу, чтобы адреса в моих фиктивных данных были действительными, потому что я надеюсь позволить себе и пользователям этих фиктивных данных (например, тем, кто изучает веб-разработку) иметь возможность интегрировать/ смешайте фиктивные данные с Google Maps и убедитесь, что они действительно отображаются правильно.   -  person Joseph    schedule 27.04.2018
comment
Существуют онлайн-сайты и службы, которые решили (каламбур) эту проблему, например fakenamegenerator.com.   -  person Uncle Long Hair    schedule 02.05.2018


Ответы (2)


Погуглив вашу проблему, я нашел 2 интересные ссылки:

  1. https://github.com/EthanRBrown/rrad, который предоставляет около 3200 реальных анонимных адресов.
  2. https://openaddresses.io, у которого также есть ссылка на гитхаб с открытым исходным кодом с полным набором данных.

Я не рекомендую очищать генераторы поддельных адресов, так как они не гарантируют существование. Я бы тоже не стал делать выборку в картах Google, так как вы наверняка попадете в черный список.

Извлечь данные из загруженного zip-файла в 2 легко: это zip-файлы, содержащие CSV-файлы с полным адресом, zip, lat, lon и т. д.

Два приведенных выше набора данных «гарантируют» существование адреса. Я не знаю, насколько сложны ваши другие условия, а именно наличие хотя бы одного действительного адреса для каждого из 41 000 почтовых индексов. Если это жесткое ограничение, я сомневаюсь, что вы получите такой набор данных с открытым исходным кодом.


ИЗМЕНИТЬ:

Если у вас есть список всех почтовых индексов в США, полностью автоматизированным решением является использование службы под названием nominatim of openstreetmap (с учетом их TOC!)

1) получить lat, lon (центральная точка или адрес по умолчанию) каждого почтового индекса:

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.

person Lynx-Lab    schedule 27.04.2018
comment
У меня не будет возможности попробовать это в течение нескольких дней, но, похоже, вы нашли идеальное решение моей проблемы с номинатимом! Я свяжусь с вами и назначу награду через несколько дней. - person Joseph; 27.04.2018

Вы можете установить случайный адрес:

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}}
person neosergio    schedule 27.05.2021