我试图使用Python请求在网页https://www.meo.pt/tv/canais-programacao/guia-tv
上获取EPG数据。我经常使用这个模块,但主要是GET
方法。但是,此请求正在使用POST
。每次向下滚动页面时,都会向下面的API发送一个请求,使用这些参数将其他程序数据加载到页面:
import requests
#post request
url = 'https://www.meo.pt/_layouts/15/Ptsi.Isites.GridTv/GridTvMng.asmx/getProgramsFromChannels'
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Content-Length': '214',
'Content-type': 'application/json; charset=UTF-8',
'Host': 'www.meo.pt',
'Origin': 'https://www.meo.pt',
'Referer': 'https://www.meo.pt/tv/canais-programacao/guia-tv',
'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36',
'X-KL-Ajax-Request': 'Ajax_Request'
}
data = {"service":"channelsguide",
"channels":["LVTV","TOROTV","CAÇAP","CAÇAV","RTPACRS","CLUBB","MCM T","TRACE","24KITC","E!"],
"dateStart":"2021-04-20T23:00:00.000Z",
"dateEnd":"2021-04-21T23:00:00.000Z",
"accountID":""}
r = requests.post(url=url, headers=headers, data=data)
print(r.text)
我已经尝试了这个请求,无论使用了还是没有使用头,因为我不知道POST
请求是否需要它们。但是,这两个选项都没有返回我所期望的结果,即一个包含这些通道的程序数据的JSON对象
我做错了什么
在请求函数中考虑使用^ {CD1>}参数而不是^ {CD2>}。
json
参数将您的正文解析为JSON格式,同时data
您正在发送一个原始字典如果您想继续使用
data
参数,您应该将数据字典解析为JSON以发送正确的正文格式您可以使用以下示例将json数据发布到API Url:
印刷品:
您应该将标题设置为:
完整代码为:
相关问题 更多 >
编程相关推荐