2017-02-02 137 views
3

我正在学习Python,我试图请求访问使用命令请求的网站。我做了以下内容:Python请求响应504

import requests 
requests.get("http://www.charitystars.com") 

但是我得到<Response [504]>,这应该是一个错误,因为汤命令soup = BeautifulSoup(r.content)返回一个空行。我尝试过与其他网站,我得到<Response [200]>,和汤的作品。所以我想知道为什么这个命令在第一个网站上不起作用,以及Response 504的实际含义。

+0

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes – jwodder

+0

@jwodder谢谢。不过,我不明白。这是什么意思?它只是暂时下降?或者有办法解决这个问题吗? – tony

+1

'5xx'大多意味着服务器有一些内部问题,你必须等待管理员处理这个问题。 – furas

回答

4

本页不喜欢剧本/漫画,它会检查标题user-agent

它也可能需要此信息来显示正确的页面 - 不同的桌面,平板电脑,smartfon。

import requests 

headers = {'User-Agent': 'Mozilla/5.0'} 

r = requests.get("http://www.charitystars.com/", headers=headers) 

print(r.status_code) 

BTW:requests作为默认使用"User-Agent": "python-requests/2.12.1"

您可以使用门户http://httpbin.org看到您的要求。

import requests 

r = requests.get("http://httpbin.org/get") 

print(r.text) 
+0

可否请你解释一下,为什么如果我指定头文件,它会返回200代码?谢谢! – tony

+0

某些服务器检查此标头以识别您的浏览器及其功能 - 然后他们可以使用不同的方法来显示页面。他们还使用它来识别脚本/机器人并拒绝访问。 – furas

+0

顺便说一句:尝试'r = requests.get(“http://httpbin.org/get”)'和'print(r.text)',你会发现'requests'默认使用''User-Agent': “蟒蛇-请求/ 2.12.1”' – furas