您的位置:首页 > 编程语言 > Python开发

关于python3实现cookie登录问题

2016-05-24 16:03 411 查看
尝试写了个小爬虫,抓点虎扑上面的发帖信息,但发现查看到一定页数后以及一些用户资料信息时,需要进行用户登录。

于是在网上找了些资料,发现总是失败,而且虎扑的登录有15分钟重复登录则要输入验证码的限制。后来几经周转和向他人请教,方才实现。

现将思路整理下来:

第一步,确定post数据的页面(post给网站你的用户名、密码等信息)

我之前一直是用http://passport.hupu.com/login,在用浏览器抓取post信息的时候,也没有仔细观察,

其实对于虎扑而言,需要post数据的页面是:http://passport.hupu.com/pc/login/member.action

第二步:封装cookie信息

cookie = http.cookiejar.CookieJar()
cookieProc = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(cookieProc)
urllib.request.install_opener(opener)

写header和postdata数据:
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',  

           'Referer' : 'https://passport.hupu.com/pc/login?project=my&from=pc'}  

 

postData = {

            'username' : 'xxx',  

            'password' : 'xxx' 

            } 

第三步:

写个函数,进行页面上的请求:

def GetUrlRequest(iUrl,iStrPostData,header):
postdata=urllib.parse.urlencode(iStrPostData)
postdata=postdata.encode(encoding='UTF8')
req= urllib.request.Request(
url = iUrl,
data = postdata,
headers = header)
result=urllib.request.urlopen(req).read().decode("UTF8")
return result

第四步:
执行了上面的函数后,爬虫程序便已经具有cookie信息,以后在访问其他页面的时候,直接传入header和url即可,不要重复传入postdata,

同样,也不要再次执行上面的函数操作。

req=urllib.request.Request(url=url,headers=headers)
result=urllib.request.urlopen(req).read().decode("gbk")
print(result)

url可以是你要访问的其他页面了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: