爬虫5 cookie的使用
简述:cookie, 用户登录某网站时的登录信息,记录本地浏览器中。在访问其它需要此用户的页面时,可以通过cookie信息来登录验证。
爬虫中,保存cookie, 需要时直接使用
一、 requests库中,使用requests.Session()来保存cookie信息
"""使用session保存cookies, 并在需要此参数的会话中,直接使用""" import requests from fake_useragent import UserAgent # 保存cookies到session中 def save_cookies(session): url = "https://www.kuaidaili.com/login/" headers = { 'User-Agent': UserAgent().chrome } login_info = { 'username': '...', 'passwd': '...' } r = session.post(url, headers=headers, data=login_info) print('---响应值: ', r.status_code, '---编码: ', r.encoding) print(r.text) # 调动session中的cookie def load_cookies(session): url = "https://www.kuaidaili.com/support/" # 我的工单页, 需要用户登录信息 headers = { 'User-Agent': UserAgent().chrome } r = session.get(url, headers=headers) print('---响应值: ', r.status_code, '---编码: ', r.encoding) print(r.text) # 主函数 def main(): # 创建session对象 session = requests.Session() # 保存cookie到session save_cookies(session) # 调用cookie load_cookies(session) if __name__ == '__main__': main()
二、urllib中
a. 直接使用cookie信息访问页面
"""cookie, 网页端存储用户登录信息等数据, 在其他页面需要时提供 1. 直接使用浏览器中查到的cookie,进行验证 2. 记录用户登录信息,使用登录信息来验证 """ from urllib.request import Request, urlopen from fake_useragent import UserAgent # url = 'https://account.cnblogs.com/signin' url = 'https://home.cnblogs.com/u/leafchen/detail/' headers = { 'User-Agent': UserAgent().chrome, 'Cookie': '...' } request = Request(url, headers=headers) response = urlopen(request) info = response.read() print(info.decode())
b. 使用 “urllib.request” 下的 “HTTPCookieProcessor” 记录cookie信息,使用 高级用法"build_opener" 来生成opener对象,发送带有cookie的请求
"""cookie, 网页端存储用户登录信息等数据, 在其他页面需要时提供 1. 直接使用浏览器中查到的cookie,进行验证 2. 记录用户登录信息,使用登录信息来验证 """ from urllib.request import HTTPCookieProcessor from urllib.request import Request, build_opener from fake_useragent import UserAgent from urllib.parse import urlencode # 步骤 # 1. 使用爬虫登录,并记录登录信息 url = 'https://www.kuaidaili.com/login/' headers = { 'User-Agent': UserAgent().chrome } login_info = { 'username': '...', 'passwd': '...' } request = Request(url, headers=headers, data=urlencode(login_info).encode()) # 创建可以保存cookie的对象 handler = HTTPCookieProcessor() # 创建自定义opener对象并加载handler,用来发送请求 opener = build_opener(handler) # 使用opener.open发送请求 response = opener.open(request) info = response.read() # print(info.decode()) # 2. 访问其它需要用户信息的页面 support_url = 'https://www.kuaidaili.com/support/' request2 = Request(support_url, headers=headers) response2 = opener.open(request2) info2 = response2.read() print(info2.decode())

浙公网安备 33010602011771号