为什么Python的requests会抛出BadStatusLine异常?

3
在Python中,如果我导入requests并执行以下操作:
t = requests.get("http://www.azlyrics.com/u/urban.html")

我收到了这个异常:
raise BadStatusLine(line)
http.client.BadStatusLine: ''

有没有人知道如何解决这个问题?
1个回答

7

可能会有 不同的 原因 导致这种错误,但在这种特定情况下,看起来像是一个简单的 网页爬取检测 - 可以通过提供一个假装是真实浏览器的 User-Agent 头信息 来解决:

In [2]: requests.get("http://www.azlyrics.com/u/urban.html")
...
ConnectionError: ('Connection aborted.', BadStatusLine("''",))

In [3]: requests.get("http://www.azlyrics.com/u/urban.html", headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'})
Out[3]: <Response [200]>

我忘记了我已经调整了nginx以拒绝“恶意用户代理”。现在我很糟糕。非常感谢。(我最初用PHP编写的代码,找不到解决方案,然后将整个项目移植到Python中,因为那个愚蠢的自我特性) - nerkn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接