es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lista de todos los códigos postales de Estados Unidos utilizando uszipcode

He estado tratando de obtener todos los códigos postales de Estados Unidos para un proyecto de raspado web para mi empresa. Estoy tratando de usar la biblioteca uszipcode para hacerlo automáticamente en lugar de manualmente desde el sitio web que me interesa, pero no puedo entenderlo.

Este es mi intento manual:

from bs4 import BeautifulSoup
import requests

url = 'https://www.unitedstateszipcodes.org'
headers = {'User-Agent': 'Chrome/50.0.2661.102'}
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.text, 'html.parser')

hrefs = []
all_zipcodes = []

# Extraer todo
for data in soup.find_all('div', class_='state-list'):
    for a in data.find_all('a'):
        if a is not None:
            hrefs.append(a.get('href'))
hrefs.remove(None)

def get_zipcode_list():
    """
           get_zipcode_list obtiene la respuesta GET del servidor de archivos web utilizando la API CDX
           :return: salida de la API CDX en formato json.
        """
    for state in hrefs:
        state_url = url + state
        state_page = requests.get(state_url, headers=headers)
        states_soup = BeautifulSoup(state_page.text, 'html.parser')
        div = states_soup.find(class_='list-group')
        for a in div.findAll('a'):
            if str(a.string).isdigit():
                all_zipcodes.append(a.string)
    return all_zipcodes

Esto lleva mucho tiempo y me gustaría saber cómo hacer lo mismo de manera más eficiente usando uszipcodes.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en python y web scraping, puedes utilizar la biblioteca uszipcode para obtener automáticamente todos los códigos postales de EE.UU. para tu proyecto de web scraping. Esto es lo que puedes hacer:

    1. Instala la biblioteca uszipcode usando pip:
      pip install uszipcode
      
    2. Una vez instalada, puedes utilizar la clase SearchEngine proporcionada por la biblioteca para obtener todos los códigos postales especificando la opción simple_zipcode:
      from uszipcode import SearchEngine
      
      search = SearchEngine(simple_zipcode=True)
      all_zipcodes = [entry.zipcode for entry in search.by_state('') if entry.zipcode is not None]
      
      print(all_zipcodes) # imprime una lista de todos los códigos postales de EE.UU.
      

    Este código te dará todos los códigos postales de EE.UU. de manera más eficiente y rápida que tu intento manual. La opción simple_zipcode te permite obtener solo la información básica del código postal, lo cual acelera el proceso en comparación con el uso de la información completa del código postal proporcionada por la clase SearchEngine.

Comments are closed.