爬虫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())

 

posted @ 2020-04-28 16:20  黑无常  阅读(261)  评论(0)    收藏  举报