关于python3实现cookie登录问题

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

于是在网上找了些资料,发现总是失败,而且虎扑的登录有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可以是你要访问的其他页面了。




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值