所以我首先使用requests.head()来下载标题。我做了一些验证(检查状态代码,检查内容类型),如果这是好的我下载正文。但是我使用的是requests.get(),但是使用.get()不仅会下载正文,还会下载我刚下载的标题。所以我不需要两次下载标题,无论如何,如果标题看起来不错,我可以下载获取响应的正文吗?
答案 0 :(得分:1)
不,没有办法。 HTTP具有HEAD请求,该请求仅获取标题,但是没有请求仅获取正文。
在您需要之前,不要过分担心效率;无论如何,标题通常不会太大。如果正文较小,则首先使用requests.get()
;如果需要,可以使用requests.head()
后跟requests.get()
。
答案 1 :(得分:0)
你不能!这不是 HTTP 的工作方式。如果您想要使用较少的流量,那么您所需要的就是执行head
请求,然后检查您是否想要获取正文。如果是,请使用get
。
下载 HTTP标头两次不会花费您(很多)性能或流量,这是必要的。
答案 2 :(得分:0)
在404或302的情况下只询问标题是没有意义的。你得到的错误和成本与直接询问身体相同,或者你没有得到错误,需要第二次请求身体。
因此,除非身体非常大,否则我会直接要求身体提出一个请求。如果它很大,但是在分块模式下传输,你可以读取带有第一个块的头,如果内容类型错误,则中止transfert。
HTTP HEAD
请求没有共同的用法,你描述的内容看起来并不像。它们通常仅在您只需要标题时使用,并且永远不会使用正文。