Python爬虫如何正确使用cookie的完整攻略
什么是cookie
Cookie,指的是网站为了辨别用户身份,维护登录态,而储存在用户本地终端上的数据。通俗的来讲,当我们在浏览器里面登录某个网站时,这个网站会向我们浏览器中写入一些数据,这就是cookie。
爬虫模拟登录网站时需要注意的是,要在请求头中加入cookie,模拟用户已经通过登录验证的状态。否则,网站反爬虫机制会将未登录的请求拒绝。
爬虫如何获得cookie
爬虫可以通过以下方式获得 cookie:
- 手动登录网站,通过浏览器查看网站存储的 cookie ,然后将获取的 cookie 值添加到请求头中提交给服务器;
- 通过程序自动模拟登录,登录成功后获取返回的响应结果,从响应结果中提取 cookie,然后在请求头上添加提取到的 cookie 值。
当采用第二种方式自动登录时,最好使用第三方库 requests_session 或者 Session 来保存 cookie ,方便后续的请求使用。
以下是一些示例代码:
示例一:使用 requests_session 来保存 cookie
import requests
session = requests.session()
headers = {
...
}
login_url = "http://example.com/login"
username = "your_username"
password = "your_password"
# 先访问一遍登录页,获取cookie
response = session.get(login_url, headers=headers)
# 构造登录的数据(根据网站不同,可能有所区别)
data = {
'username': username,
'password': password,
}
# 将登录数据提交给服务器
response = session.post(login_url, headers=headers, data=data)
# 登录成功后,保存 cookie 到 session 对象中,方便后续的请求使用
cookie_jar = session.cookies
示例二:从响应结果中提取 cookie
import requests
headers = {
...
}
login_url = "http://example.com/login"
username = "your_username"
password = "your_password"
# 先访问一遍登录页,获取cookie
response = requests.get(login_url, headers=headers)
# 构造登录的数据(根据网站不同,可能有所区别)
data = {
'username': username,
'password': password,
}
# 将登录数据提交给服务器
response = requests.post(login_url, headers=headers, data=data)
# 从响应结果中提取 cookie ,将获取到的 cookie 添加到请求头中
cookie_dict = requests.utils.dict_from_cookiejar(response.cookies)
headers['cookie'] = "; ".join([f"{key}={value}" for key, value in cookie_dict.items()])
爬虫如何使用 cookie 发送请求
获得 cookie 后,就可以通过在请求头中添加 cookie 的方式来发送带有登录状态的请求。
以下是示例代码:
import requests
headers = {
...
}
cookie_jar = ...
# 将 cookie 添加到 web 请求头中
headers['cookie'] = requests.utils.dict_from_cookiejar(cookie_jar)
# 发送请求
response = requests.get(url, headers=headers)
总结
爬虫使用 cookie 提交数据需要注意以下几点:
- 在 requests 中使用 cookie 时,需要将 requests.utils.dict_from_cookiejar() 方法获取的 cookie 字典转换为字符串再添加到请求头中;
- 一些网站的 cookie 需要携带额外的参数,如".aspxauth"等,需要特别注意。
- 如果 cookie 有效期很短,需使用 requests.session 等支持 cookies 持久化的工具。
- 尽量遵守网站robots协议,避免引起不必要的问题。
希望以上内容对您有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 爬虫如何正确的使用cookie - Python技术站