Jeg prøver at vise USPS Shipping Zone-oplysninger, men den del af USPS-webstedet, jeg brugte til at skrabe denne information fra, er blevet brudt i flere måneder, og jeg spekulerer på, om nogen kender en anden måde at få det i et parsable-format?
Den side, der er blevet brudt i flere måneder, er her: http://postcalc.usps.gov/Zonecharts/ZoneChartPrintable.aspx?zipcode=931
De har det samme diagram i et ikke-så-parsable format her: http://postcalc.usps.gov/Zonecharts/
Jeg cachelagrer disse oplysninger, så de behøver ikke at blive anmodet konstant, men cachen ryddes lejlighedsvis, da zoner ændres fra tid til anden.
Svar
Her er koden, som jeg bruger til at hente de JSON-data, der udfylder http://postcalc.usps.gov/Zonecharts/ .
private String getZoneJSON(String zip3Digit) { URL url; HttpURLConnection con; String zoneJSON = null; try { url = new URL("https://postcalc.usps.com/DomesticZoneChart/GetZoneChart?ZIPCode3Digit=" + zip3Digit + "&ExcelFormat=1"); con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"); con.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"); con.setRequestProperty("DNT", "1"); con.setInstanceFollowRedirects(false); InputStream h = (InputStream) con.getContent(); BufferedReader r = new BufferedReader(new InputStreamReader(h)); zoneJSON = r.readLine(); } catch(Exception e) { e.printStackTrace(); } return zoneJSON; }
Kommentarer
- Dette er perfekt, tak. Jeg havde ikke har ikke været tilbage for at gennemgå deres nye websted om et stykke tid, men er glad for, at de serverer en JSON-streng nu i stedet for at skulle analysere HTML.
Svar
Du kan også beregne zonen ud fra afstanden mellem koordinatens oprindelse SCF (Sectional Center Facility) og destinationen SCF
Zone 1 : Ikke-lokale zoner inden for en radius på 50 mil fra oprindelsespunktet
Zone 2: 51-150 miles radius
Zone 3: 151-300 miles radius
Zone 4: 301-600 miles radius
Zone 5: 601-1.000 miles radius
Zone 6: 1001-1400 miles radius
Zone 7: Radius 1401-1800 miles
Zone 8: 1801 miles og derover
Zone 9: Postnumre tildelt til ekstraordinære netværksforhold
- Du kan bøde SCF for hvert postnummer her: https://fast.usps.com/fast/fastApp/resources/labelListFiles.action
- Du kan få koordinaterne til SCF fra Google API
- Når du har koordinaterne, er der mange måder for at beregne afstanden imellem dem
- Du kan også springe koordinaterne over og bare beregne afstanden mellem SCF-postnumrene selv (ikke de postnumre, den tjener)
Svar
USPS sælger et fuldzonediagram for alle fra-til-zip-kombinationer til $ 63 her: https://postalpro.usps.com/operations/zone-charts
Jeg sendte ind for en, da jeg ikke har været i stand til at finde information dette andre steder i flere måneder nu.