python3爬虫-遇到304的解决方式

爬取中国土地网时出现304情况304对应描述:客户端已经执行了GET,但文件未变化这是因为该网站采取了强缓存验证, 服务器将要爬取的内容在本地做了缓存,再次请求的时候,会首先检查本地缓存中是否已存在,如果有就返回304

解决方法:在requests headers中,禁用删除If - Modified-Since 和If-None-Natch 这两项,服务器是通过检查这两项来判断是否是已经做了缓存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import requests

url = 'http://example.com'
headers = {
# 不包含 If-Modified-Since 和 If-None-Match
}

response = requests.get(url, headers=headers)

# 检查响应状态码
if response.status_code == 304:
print("Resource has not been modified.")
else:
print("Resource has been fetched.")