首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中从请求返回JSON文件

在Python中从请求返回JSON文件
EN

Stack Overflow用户
提问于 2018-06-02 02:46:03
回答 1查看 445关注 0票数 0

过去,我在其他站点上使用POST请求并从它们接收数据时取得了一些成功,但由于某些原因,我在使用metacritic站点时遇到了困难。

使用chrome和开发人员工具,我可以看到,当我开始在搜索栏中输入时,它会启动对以下url的POST请求。

代码语言:javascript
复制
searchURL = 'http://www.metacritic.com/g00/3_c-6bbb.rjyfhwnynh.htr_/c-6RTWJUMJZX77x24myyux3ax2fx2fbbb.rjyfhwnynh.htrx2ffzytx78jfwhmx3fn65h.rfwpx3dcmw_$/$'

我还知道为了获得响应,我的报头必须如下所示

代码语言:javascript
复制
headers = {'User-Agent' : "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

当我运行这段代码时,我得到一个200的状态代码,这表明它工作了,但我的响应文本不是我所期望的。当我期待搜索结果的json时,我正在接收整个页面的内容。这里我漏掉了什么?

代码语言:javascript
复制
title = 'Grand Theft Auto'

#search request using POST
r = requests.post(searchURL, data = {'searchTerm' : title}, headers = headers)

print(r.status_code)

print(r.text)

你可以在下面的图片中看到我期望得到的东西。

Headers

Response

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 03:03:15

不确定有什么不同-可能是因为我住在欧洲,或者因为我在Chrome中将DNT (不跟踪)设置为真-但对我来说,Metacritic autocomplete请求只会发送到http://www.metacritic.com/autosearch,参数search_term设置为搜索值,search_filter设置为all

从你的屏幕截图看,我认为浏览器中自动完成的URL是用你的会话id构造的,可能是为了避免你想要做的事情:)

因此,在您的情况下,我将按以下顺序尝试:

  • 发布到 /autosearchURL,如果这不起作用
  • 找出会话 ID 到 URL 编写逻辑,然后在代码中发出初始请求以获取会话 ID 并使用它
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50649401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档