我正在尝试抓取
https://www.comedycellar.com/lineup/api/
,这是一个具有以下参数的 POST 请求:
action: "cc_get_shows"
json: {"date":"2024-01-10","venue":"newyork","type":"lineup"}
我的尝试如下:
import requests
lineup_url = 'https://www.comedycellar.com/lineup/api/'
json = {"date":"2024-01-08","venue":"newyork","type":"lineup", "action": "cc_get_shows"}
response = requests.post(lineup_url, json=json)
但是它返回状态代码 500。有什么想法让它发挥作用吗?作为参考,您可以访问 https://www.comedycellar.com/new-york-line-up/ 选择一个日期,然后在网络部分中您可以看到正在发出的 POST 请求。
您准备有效负载的方式是错误的。请尝试以下操作来获取所需的数据:
import json
import requests
lineup_url = 'https://www.comedycellar.com/lineup/api/'
headers = {
'Accept': '*/*',
'Referer': 'https://www.comedycellar.com/new-york-line-up/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
payload = {
'action': 'cc_get_shows',
'json': json.dumps({"date":"2024-01-08","venue":"newyork","type":"lineup"})
}
response = requests.post(lineup_url, data=payload, headers=headers)
print(response.status_code)
print(response.json())