我的任務是遍歷
uj5u.com熱心網友回復:
我不想淹沒服務器。看起來它根據郵政編碼查詢后臺資料庫中的資料,并非所有郵政編碼都有相關資料。如果您可以確定合適的范圍,則在可迭代物件(例如串列)中使用該范圍。除了針對所有郵政編碼的簡單嘗試將是大量請求,您需要開始考慮批處理請求、隨時間擴展、添加暫停和切換到異步請求。
圖表資料可以從回應文本中的 JavaScript 物件中提取,并使用json庫進行決議。我假設這些年份在回應中是一致的。
import requests
import pandas as pd
import re, json
results = []
columns = ['zip']
with requests.Session() as s:
s.headers = {'User-Agent':'Mozilla/5.0'}
for code in range(23022, 23025):
url = f'https://www.unitedstateszipcodes.org/{code}/#stats'
r = s.get(url)
try:
res = re.search(r'var data = (\[.*\])', r.text).group(1)
data = json.loads(res)[0]['values']
values = [i['y'] for i in data]
values.insert(0, code)
results.append(values)
if values and len(columns) == 1:
columns.extend([i['x'] for i in data])
except:
pass
df = pd.DataFrame(results, columns = columns)
print(df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/401196.html
上一篇:網頁抓取:使用BeautifulSoup(page.content,'html.parser')沒有回傳正確的內容
下一篇:試圖在網頁上列印出一行
