Python3:轻松实现带cookie登录访问网页
换到Python3后发现实现登录后访问网页轻松了不少,而且逻辑也更清晰了。
简单来说像这样:
import http.cookiejar
import urllib.request
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
其中:
cj = http.cookiejar.CookieJar()
创建一个用来存储cookie
的对象
urllib.request.HTTPCookieProcessor(cj)
将这个对象加载到urllib
模块
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
构造使用这个cookiejar
的opener
r = opener.open("http://example.com/")
只是一个非常简单的例子,实际上一般是用open()
函数执行一个Request
对象,比如:
get = urllib.request.Request(
url='http://' + host, headers=headers, method='GET')
con = dealer.open(get).read().decode('gbk')
另外,只要使用的cookiejar
不变,就可以构建无数多个opener
,opener
构建好后就不再需要分神去处理cookie
问题了,只需要专注于发送网页请求,对网页进行处理之类的了。
http.cookiejar
实际包含很多有用的功能,比如存储cookie
到文件,从文件加载cookie
,这样可以实现很多意想不到的功能。
博主,我遇到了一个问题,也是用的这个方法,可以登录人人网,但是登录WordPress提示--错误:Cookies被阻止或者您的浏览器不支持。要使用WordPress,您必须启用cookie。百度也没找到这方面的解释。
这个...你可以提供一个链接之类的么?
一般你可以用如fiddler之类的工具,去追踪HTTP请求里正常的和用代码实现的登陆方法在参数等上的差异,然后就容易找出问题的原因了~
你这个代码怎么萎事啊 - - 错漏百出
第一个代码块第五行,bulid_opener,跟HTTPCookieProcess
能用心点写么
非常非常抱歉!!!已经改正过来了,所有代码我都先测试过了的,不知为啥这个忘了...