过去,我在其他站点上使用POST请求并从它们接收数据时取得了一些成功,但由于某些原因,我在使用metacritic站点时遇到了困难。
使用chrome和开发人员工具,我可以看到,当我开始在搜索栏中输入时,它会启动对以下url的POST请求。
searchURL = 'http://www.metacritic.com/g00/3_c-6bbb.rjyfhwnynh.htr_/c-6RTWJUMJZX77x24myyux3ax2fx2fbbb.rjyfhwnynh.htrx2ffzytx78jfwhmx3fn65h.rfwpx3dcmw_$/$'
我还知道为了获得响应,我的报头必须如下所示
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时,我正在接收整个页面的内容。这里我漏掉了什么?
title = 'Grand Theft Auto'
#search request using POST
r = requests.post(searchURL, data = {'searchTerm' : title}, headers = headers)
print(r.status_code)
print(r.text)
你可以在下面的图片中看到我期望得到的东西。
发布于 2018-06-02 03:03:15
不确定有什么不同-可能是因为我住在欧洲,或者因为我在Chrome中将DNT (不跟踪)设置为真-但对我来说,Metacritic autocomplete请求只会发送到http://www.metacritic.com/autosearch
,参数search_term
设置为搜索值,search_filter
设置为all
:
从你的屏幕截图看,我认为浏览器中自动完成的URL是用你的会话id构造的,可能是为了避免你想要做的事情:)
因此,在您的情况下,我将按以下顺序尝试:
/autosearch
URL,如果这不起作用https://stackoverflow.com/questions/50649401
复制相似问题