学习了如何使用GET方法打开网页,但我要如何判断是否成功获取一个网页,还是失败?这两者之间有什么不同的回显,除此之外还有其他回显吗?
HTTP状态码
- status_code
>>> r= requests.get('https://www.***.com/get')
>>> r.status.code
200
这里返回值是200,代表什么呢?这里给出常见状态码所代表的意思
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
除了以上这些,其实还有很多,建议搜一下,对后面学习有一定帮助
- raise_for_status()
>>> r = requests.get('https://www.***.com/get')
>>> r.raise_for_status()
在这个方法内部,会自动检测获取网页状态码是否为200,不是就会报错,
好处在于不需要多余添加if条件语句判断,在try-except语句中有很大的作用
知道网页获取成功,那要怎样查看获取的网页呢
查看获取网页
- text
>>> r = requests.get('https://www.***.com/get')
>>> r.text
奇怪?并没有像想象中放回一大堆字符,返回有多少行
因为网页返回的是一大堆字符串,在以前python的IDLE中,直接返回这么一大串字符,会出现莫名其妙的bug,在python3.7中则返回这些字符有多少行。因此,我们要查看返回结果,最好使用截取字符串方式查看
- text[ : ]
>>> r = requests.get('https://www.***.com/get')
>>> r.text[:500]
截取前面500个字符查看,就可以看到这么HTML标签了
学习嘛,是需要举一反三的
在文章开头提到查看状态码的函数里status_code和raise_for_status()
虽然是两个不同的函数,但为什么一个加括号一个不加括号
r.status_code和r.raise_for_status(),除去功能外,他们本质区别是什么
使用r.status_code()或r.raise_for_statues会怎样?