其实Requests应该写在BeautifulSoup之前,毕竟要先得到url访问才能解析html文件,BeautifulSoup相关请参考爬虫常用包(一)BeautifulSoup。
Requests的作用
爬虫的基本逻辑,就是自动化的下载我们目标网址上的信息。通过使用代码来免除大量重复的人工操作。
爬虫的基本流程为:发起请求——获取响应。——解析内容——保存数据
(具体的爬虫流程与实例将在后续更新)
Requests的作用就是“发起请求——获取响应”。简单解释就是模拟我们打开某个目标页面(发送请求)并获取其html文件(获得相应)的过程。
Requests不仅可以get也可以post,鉴于爬虫主要需要的操作还是get,后续着重介绍get的相关内容。
Requests中函数、参数的基本介绍
表中只是基础使用下的一些重要函数与参数,可以在后续的具体使用中不断完善
函数名 | 作用 |
---|---|
requests.request() | 构造请求,后续操作的基础 |
requests.get() | 获取目标网页的数据 |
requests.post() | 向目标网页提交数据 |
requests.delete() | 请求目标网页删除指定信息 |
requests.patch() | 请求目标网页修改局部信息 |
requests.head() | 获取目标网页头部信息 |
参数 | 含义 |
---|---|
url | 目标网址 |
headers | 请求头 |
cookies | 用户的身份信息 |
proxies | IP代理 |
timeout | 超时时间 |
Requests的使用
1.获得请求
import requests
r = requests.get('https://bj.58.com/jianzhianbao/52154103509944x.shtml?iuType=p_1&PGTID=0d300000-0000-1c64-7879-d54c421dd6e1&ClickID=3')
# <Response [200]>
上述代码只是使用最基本的get方式来获取请求,得到的结果为“<Response [200]>”即请求成功。但因为现在很多网站都有反爬机制,因此我们的程序也需要不断的伪装自己,使自己尽量不像一个自动化的机器人,cookies等参数的用途就是对我们的爬虫进行伪装。
我们还可以通过使用带参数的请求来精准查询目标数据
url = 'https://bj.58.com/jianzhianbao/52154103509944x.shtml?iuType=p_1&PGTID=0d300000-0000-1c64-7879-d54c421dd6e1&ClickID=3'
data = {'name':'兼职招聘',}
r =requests.get(url,params=data)
print(r.text)
由于需要输入验证码,这里是得不到具体的结果的
2.添加请求头
当目标网页需要登录时,如果只使用简单的get是无法得到目标网页信息的,这时候就需要添加一个header。
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'}
url = 'https://bj.58.com/jianzhianbao/52154103509944x.shtml?iuType=p_1&PGTID=0d300000-0000-1c64-7879-d54c421dd6e1&ClickID=3'
data = {'name':'兼职招聘',}
r =requests.get(url,headers=headers,params=data)
print(r.text)
3.添加cookies
cookies可以理解为是一种身份认证信息,当爬虫目标网页需要登录时,我们可以通过cookies伪装。cookie是一个动态的信息,具有时效性。其获取方式可以通过查看浏览器的源码,从中找到此次登陆可以使用的cookie。
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
'Cookie': 'sessionid=feli4ngf23njptxxb0qma5tl04x8wc43; csrftoken=O9YSm7TMaIb2ZdqEnENJY1GBXj3xUE26',
}
r =requests.get(url,headers=headers)
4.添加超时异常提醒
通过timeout可以设置超时时间,如果在规定时间内得不到网页反馈,则终止连接判定为异常情况。
response = requests.get(url, timeout=5)
# 设定如果超过5秒未得到响应则为异常
另外,Requests中还有其他更高阶的使用方式,例如添加IP代理、进行证书验证、分流下载数据等等,这里只介绍了一些基本的、最重要的操作。