
Requests库的官方文档指出:让HTTP服务人类。 细心的读者会发现, Requests库的 作用就是请求网站获取网页数据的。
一般情况下,大多数网站都会拦截 Python 爬虫。这个时候就需要伪装成普通浏览器的 User Agent。(点击此处以获取常用 User Agent)
这里,就需要把请求头(headers)中的 User Agent 选项定义为你选择的 User Agent,如下:
import requests
headers={
'User Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'
}
get=requests.get('https://wrsblog.cn/', headers=headers)
print(get)
程序输出的结果如下:
<Response [200]>
这也就说明网站服务器返回 200 代码,意思就是网站服务器响应正常。
Requests 库请求并不会 ”一帆风顺” ,当遇到一些情况时, Requests库会抛出错误或者异常, Requests库的错误和异常主要有以下4种。
- Requests抛出一个ConnectionError异常, 原因为网络问题(如DNS查询失败、 拒绝连接等)。
- Response.raise_ for_ status()抛出一个HTTPError异常,原因为 HTTP请求返回了不成 功的状态码(如网页不存在, 返回404错误)。
- Requests抛出一个Timeout异常, 原因为请求超时。
- Requests抛出一个TooMany Redirects 异常, 原因为请求超过了设定的最大重定向次数。
所有Requests显式抛出的异常都继承自requests.exceptions.RequestException,当发现这些错误或异常进行代码修改重新再来时,爬虫的程序又开始重新运行了,爬取到的数据又会重新爬取一次,这对千爬虫的效率和质量来说都是不利的。 这时,便可通过Python 中的 try来避免异常了, 具体使用方法如下:
import requests
headers={
'User Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'
}
get=requests.get('https://wrsblog.cn/', headers=headers)
try:
print (get.text)
except ConnectionError:
print ("连接错误")
抓取Wr 博客首页的输出内容如下:
通过try和except, 如果请求成功了,会打印网页的源代码。 如果请求出现了 ConnectionError异常,则会打印“连接错误” ,这样程序就不会报错,而是给编程者一个提示,不会影响下面代码的运行。