CookieJar类

CookieJar类有一些子类,分别是FileCookieJar,MozillaCookieJar,LWPCookieJar。

  • 1.CookieJar:管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失。

  • 2.FileCookieJar (filename,delayload=None,policy=None):从CookieJar派生而来,用来创建FileCookieJar实例,检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。

  • 3.MozillaCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与Mozilla浏览器 cookies.txt兼容的FileCookieJar实例。

  • 4.LWPCookieJar (filename,delayload=None,policy=None):从FileCookieJar派生而来,创建与libwww-perl标准的 Set-Cookie3 文件格式兼容的FileCookieJar实例。

其实大多数情况下,我们只用CookieJar(),如果需要和本地文件交互,就用 MozillaCookjar() 或 LWPCookieJar()。

注意:这边要写method=GET,前面好半天不知道为什么有错,网页是getpycharm默认也是就没有管,后面发现网页可能会识别出来我是一个爬虫,加上了method=get就解决了

from urllib import request
from urllib import parse
from http.cookiejar import CookieJar

#  1.登录
#  1.1 创建一个cookie对象
cookiejar = CookieJar()
#  1.2 使用cookiejar创建一个http,cookiejar对象
handler = request.HTTPCookieProcessor(cookiejar)
#  1.3 使用上一步创建的handler创建一个opener
opener = request.build_opener(handler)
#  1.4 使用opener发送登录的请求

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36"
}
data ={
    "email": "15831222968",
    "_rtk": "970506slm"
}
login_url = "http://www.renren.com/SysHome.do"
req = request.Request(login_url, data=parse.urlencode(data).encode("utf-8"), headers=headers, method="GET")
opener.open(req)

#  2.访问个人主页
jiuyue_url = "http://www.renren.com/880151247/profile"

req = request.Request(jiuyue_url, headers=headers)
resp = opener.open(req)
with open("renren.txt", "w", encoding="utf-8") as fp:
    fp.write(resp.read().decode("utf-8"))
发布了61 篇原创文章 · 获赞 48 · 访问量 4455

猜你喜欢

转载自blog.csdn.net/weixin_45257157/article/details/103301319