使用 requests 的 get 方法库访问国家卫生健康委员会官网出现 412 错误

使用requests的get方法库访问国家卫生健康委员会官网出现412错误

爬取目的

我在完成老师布置的对新冠肺炎的传染趋势分析和预测作业,需要用到健康委员会官网的公开数据。

##问题描述
我使用requests库的get方法访问页面,返回码是412.我通过网络上的一些资料了解到这个状态码是客户端错误,服务器没有满足我的一项或多项请求。然后我尝试了修改我的访问请求头,从火狐浏览器上找到服务器的请求头更改以后还是出现相同错误。我的具体问题有两个:
1.为什么使用get方法访问会出现412状态码。我在查找资料的过程中了解到412错误一般出现于post请求中。
2.我应该如何去解决412状态码,或者通过什么方法能够得到更具体的问题信息方便我检索资料。

##代码块
由于通过尝试,我认为问题不在于访问头,且浏览器的访问头很长,所以就贴出未修改的代码

import requests
def getHTMLText(url):
    try:
        kv = {'user-agent':'Mozilla/5.0'}
        r = requests.request('get',url)
        r = requests.get(url,headers = kv,timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text[1:1000]
    except:
        return "产生异常"
if __name__ == "__main__":
    url = 'http://www.nhc.gov.cn/xcs/yqtb/list_gzbd.shtml'
    print(getHTMLText(url))
慕当垆
讨论数量: 2
4年前 评论
mudanglu (楼主) 4年前

实测是cookie的问题,请求头加上从浏览器复制的cookie就行,但是cookie是有时效的,可能几分钟内就失效了,当cookie失效时可以用selenium来获取新的cookie

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!