我現在被困在這里幾個小時了。我正在嘗試從此鏈接中抓取資料。
主要目的是獲取學校名稱和他們的電子郵件 ID。為了做到這一點,我需要首先獲取學校串列,由于 API 的原因,這里沒有加載
資料從鏈接為this的 API 加載。
請求方法是 POST,在發送 POST 請求時,回傳 500。
作業證明:
def data_fetch("https://scholenopdekaart.nl/api/v1/search/"):
headers = {
'accept': 'application/json, text/plain, */*',
'content-type': 'application/json',
'referer': 'https://scholenopdekaart.nl/zoeken/middelbare-scholen/?zoektermen=rotterdam&weergave=Lijst',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
}
response = requests.post(url, headers=headers)
print(response) # <Response [500]>
我能夠從其他有 GET 請求的鏈接中抓取資料,而 POST 請求什么也不回傳。我在這里有什么遺漏嗎?我什至嘗試將所有這些都放在標題中,但仍然得到 500。
headers = {
'accept': 'application/json, text/plain, */*',
'accept-encoding': 'gzip, deflate, br',
'content-type': 'application/json',
'dnt': '1',
'origin': 'https://scholenopdekaart.nl',
'referer': 'https://scholenopdekaart.nl/zoeken/middelbare-scholen/?zoektermen=rotterdam&weergave=Lijst',
'sec-ch-ua': '"Chromium";v="106", "Brave";v="106", "Not;A=Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': "Windows",
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'sec-gpc': '1'
}
uj5u.com熱心網友回復:
我建議使用 Google Chrome 網路選項卡來復制請求 CURL 命令。然后使用郵差,您可以匯入該 curl 命令,并使用所有資料生成 Python 請求代碼。
由于回應是純 JSON,不需要 bs4
考慮以下示例:
import requests
import json
url = "https://scholenopdekaart.nl/api/v1/search/"
payload = json.dumps({
"zoekterm": "rotterdam",
"sectorKeuze": 1,
"weergave": "Lijst"
})
headers = {
'authority': 'scholenopdekaart.nl',
'accept': 'application/json, text/plain, */*',
'cache-control': 'no-cache',
'content-type': 'application/json',
'origin': 'https://scholenopdekaart.nl',
'pragma': 'no-cache'
}
response = requests.request("POST", url, headers=headers, data=payload)
data = json.loads(response.text)
for school in data['scholen']:
print(f"{school['bisId']} \t\t {school['naam']}")
這將輸出:
25592 VSO Op Zuid
25938 Op Noord
569 Accent Praktijkonderwijs Centrum
572 Accent PRO Delfshaven
574 Marnix Gymnasium
578 Portus Zuidermavo-havo
579 Portus Juliana
580 CSG Calvijn vestiging Meerpaal
582 CBSplus, school voor havo en mavo
588 Melanchthon Schiebroek
589 Melanchthon Wilgenplaslaan
4452 Melanchthon Mavo Schiebroek
594 Melanchthon Kralingen
604 Comenius Dalton Rotterdam
26152 Zuider Gymnasium
... and some more ...
uj5u.com熱心網友回復:
擴展@0stone0 的答案,即使代碼更少,它也能作業:
import requests
import json
import pandas
json_data = {
'zoekterm': 'rotterdam',
'sectorKeuze': 1,
'weergave': 'Lijst',
}
response = requests.post('https://scholenopdekaart.nl/api/v1/search/',
json=json_data)
data = json.loads(response.content)
df = pd.DataFrame(data["scholen"])
df[["bisId", "naam"]].head()
輸出:
bisId naam
0 25592 VSO Op Zuid
1 25938 Op Noord
2 569 Accent Praktijkonderwijs Centrum
3 572 Accent PRO Delfshaven
4 574 Marnix Gymnasium
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518198.html
上一篇:刮a.href回傳空白值?
