无法从网站获取JSON,适用于一个url,但不适用于另一个url

2024-09-29 00:14:28 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我试图从一个游戏站点检索数据,以便进行一些计算和统计,以获得乐趣和学习体验

它确实适用于某些api,但不适用于其他api。 使用google Chrome并键入url,两者都可以正常工作

这段代码工作得很好:

def get_race():
    session = requests.Session()

    payload = {
        'username': Config("USERNAME"), # Get from the environment
        'password': Config("PASSWORD"), # FYI It's free and easy to set up an account to test
    }

    session.post("https://zwiftpower.com/ucp.php?mode=login", data=payload)

    url = "https://zwiftpower.com/cache3/results/2321133_view.json?"
    return session.get(url).json()

另一方面,此代码不起作用:

def get_primes():
    session = requests.Session()

    payload = {
        'username': Config("USERNAME"),
        'password': Config("PASSWORD"),
    }

    session.post("https://zwiftpower.com/ucp.php?mode=login", data=payload)

    url = "https://zwiftpower.com/api3.php?do=event_primes&zid=2321133"
    return session.get(url).json()

我已尝试删除.json(),但似乎我还没有登录

使用谷歌chrome浏览器,从一个有效的标题

请求

:authority: zwiftpower.com
:method: GET
:path: /cache3/results/2321133_zwift.json?_=1633507608083
:scheme: https
accept: application/json, text/javascript, */*; q=0.01
accept-encoding: gzip, deflate, br
accept-language: sv-SE,sv;q=0.9,en-US;q=0.8,en;q=0.7,nb;q=0.6
cookie: xxx
dnt: 1
referer: https://zwiftpower.com/events.php?zid=2321133
sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
sec-gpc: 1
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36
x-requested-with: XMLHttpRequest

回应

content-encoding: gzip
content-type: application/json
date: Wed, 06 Oct 2021 08:06:49 GMT
etag: W/"fe0ed3a7a38ea229ddc7891e5bf88088"
last-modified: Wed, 06 Oct 2021 06:16:21 GMT
server: AmazonS3
vary: Accept-Encoding
via: 1.1 54c4a3ab55229e407630e7a126ca0932.cloudfront.net (CloudFront)
x-amz-cf-id: RLvDk1sWw_xoeS3Eog-5nlU4hhM97zfOe0O8hVCfoWd4emTWrO_Cpw==
x-amz-cf-pop: CPH50-C1
x-amz-version-id: tvjoKrm4gLJ8iuad1F31UODoxpK3Sdd7
x-cache: RefreshHit from cloudfront
x-edge-origin-shield-skipped: 0

使用google chrome从一个不起作用的标题

请求

:authority: zwiftpower.com
:method: GET
:path: /api3.php?do=event_primes&zid=2321133&_=1633507608084
:scheme: https
accept: application/json, text/javascript, */*; q=0.01
accept-encoding: gzip, deflate, br
accept-language: sv-SE,sv;q=0.9,en-US;q=0.8,en;q=0.7,nb;q=0.6
cookie: xxx
dnt: 1
referer: https://zwiftpower.com/events.php?zid=2321133
sec-ch-ua: "Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "macOS"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
sec-gpc: 1
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36
<x-requested-with: XMLHttpRequest

回应

content-encoding: gzip
content-length: 2671
content-type: text/html; charset=UTF-8
date: Wed, 06 Oct 2021 08:06:54 GMT
vary: Accept-Encoding
via: 1.1 54c4a3ab55229e407630e7a126ca0932.cloudfront.net (CloudFront)
x-amz-cf-id: wZp1k5auKXGLi-jaMdgSlH2AhaEIOZ6gCT-GcR8TvuZx_9fILMwW-g==
x-amz-cf-pop: CPH50-C1
x-cache: Miss from cloudfront
x-powered-by: PHP/5.6.40

来自session.get(url.Headers)的标题

这就是正在工作的那个

{'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Last-Modified': 'Wed, 06 Oct 2021 11:46:40 GMT', 'x-amz-version-id': 'S2xtY_REBLfKDhjIm1ceS0d46kTVtGYj', 'Server': 'AmazonS3', 'X-Edge-Origin-Shield-Skipped': '0', 'Content-Encoding': 'gzip', 'Date': 'Wed, 06 Oct 2021 12:00:34 GMT', 'ETag': 'W/"601d731f1d16a60000b93246614bd107"', 'Vary': 'Accept-Encoding', 'X-Cache': 'RefreshHit from cloudfront', 'Via': '1.1 7c587fa0463f61b130aff5ca04c29170.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'CPH50-C1', 'X-Amz-Cf-Id': 'QU2CCu0mJSfeQvl8eylggLZDxQasq8fd0ztt9-RRafEYysJGSZ3cvQ=='}

非工作

{'Content-Type': 'text/html; charset=UTF-8', 'Content-Length': '5951', 'Connection': 'keep-alive', 'Cache-Control': 'private, no-cache="set-cookie"', 'Content-Encoding': 'gzip', 'Date': 'Wed, 06 Oct 2021 12:00:36 GMT', 'Expires': 'Wed, 06 Oct 2021 12:00:36 GMT', 'Set-Cookie': 'CloudFront-Key-Pair-Id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0, CloudFront-Signature=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0, CloudFront-Policy=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0', 'Vary': 'Accept-Encoding', 'X-Powered-By': 'PHP/5.6.40', 'X-Cache': 'Miss from cloudfront', 'Via': '1.1 4272985387a50d2af0b808fc13483a80.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'CPH50-C1', 'X-Amz-Cf-Id': 'xmHSoeibqgAwYabgTU7S2_8NKFHmcNdkB-vQLdVcwmxjARgo8SBb2A=='}

Tags: httpscomjsonurlsessionsecoctencoding