Python请求:如何处理状态代码304

问题描述 投票:-1回答:1

我正在尝试使用requestsbs4从网站获取信息,但我收到的状态代码304并没有来自request.get()的内容。我做了一些阅读并理解这段代码表明资源已经在我的缓存中。如何从缓存中访问资源,或者最好清除缓存,以便我可以接收新资源?

我尝试添加以下标题:headers={'Cache-Control': 'no-cache'}requests.get()但仍然有相同的问题。

此外,我已经研究了requests-cache模块,但我不清楚如何或是否可以用它来解决问题。

码:

import requests

r = requests.get('https://smsreceivefree.com/')

print(r.status_code)
print(r.content)

输出:

304
b''
python python-requests
1个回答
2
投票

如果客户端发送了条件请求,服务器应该发送304 Not Modified回复,例如具有If-Modified-Since头的请求。如果客户端已经具有页面的缓存版本,并且如果他已经拥有最新版本的内容,则希望避免下载内容,这是有意义的。

在这种情况下,网站似乎向某些类型的客户端发送304,就像看起来那样:User-Agent似乎表示自动化(在您的情况下这是真的)。

服务器应该发送一个4xx错误代码,可能是403 Forbidden,但可能使用304以便让机器人编写器离开正确的轨道并使它们进入StackOverflow。

© www.soinside.com 2019 - 2024. All rights reserved.