保存与读取cookie

接着爬取上次提过的网站。当前页面需要登录才能获取信息,编写爬虫自动登录,自定义opener对象添加可以保存cookie的HTTPCookieHandler处理器来发送请求,将cookie保存成cookie.txt文件,再读取cookie并向服务器发送请求获取目标网页信息。目标url为http://www.tuili.com/bbs/bbsShowDetail.asp?act=search&fid=260772&aid=&bid=29

登录请求url为http://www.tuili.com/bbs/bbslogincheck.asp,编码为GB2312。

运行代码

from urllib.request import Request, build_opener, HTTPCookieProcessor, urlopen
from fake_useragent import UserAgent
from http.cookiejar import MozillaCookieJar


def save_cookie():
    # 登录网页地址
    url = 'http://www.tuili.com/bbs/bbslogincheck.asp'
    # 创建UserAgent实例
    ua = UserAgent()
    # 封装请求头信息
    data = b'userid=%CF%C4%C8%D5%B1%F9%BA%EC%B2%E8&userpwd=Icedtea112'
    headers = {'user-agent': ua.chrome}
    # 创建Request对象
    req = Request(url, data=data, headers=headers)
    # 创建一个控制器用来辅助保存cookie
    cookie_jar = MozillaCookieJar()
    # 创建一个可以保存Cookie的控制器对象
    handler = HTTPCookieProcessor(cookie_jar)
    # 构建发送请求的对象
    opener = build_opener(handler)
    # 登录
    resp = opener.open(req)
    # 保存cookie到cookie.txt文件
    cookie_jar.save('cookie.txt', ignore_discard=True, ignore_expires=True)
    
    
def use_cookie():
    # 登录成功后获取目标网页html源代码
    index_url = 'http://www.tuili.com/bbs/bbsnewdoc.asp'
    headers = {'user-agent': UserAgent().chrome}
    index_req = Request(index_url, headers=headers)
    # 创建一个可以读取cookie为文件的对象
    cookie_jar = MozillaCookieJar()
    # 读取cookie文件
    cookie_jar.load('cookie.txt', ignore_discard=True, ignore_expires=True)
    # 创建一个控制器用来辅助读取cookie
    handler = HTTPCookieProcessor(cookie_jar)
    # 创建一个可以读取cookie的opener
    opener = build_opener(handler)
    # 发送请求,获取信息
    index_resp = opener.open(index_req)
    print(index_resp.read().decode('gb2312'))


if __name__ == '__main__':
    save_cookie()
    use_cookie()

运行结果(和手动登录查看的信息比对)

posted @ 2024-09-18 22:53  松鼠q  阅读(2)  评论(0编辑  收藏  举报