通过cookielib获取cookies

适用于没有验证码登录,直接post参数登录的方式

# -*- coding: utf-8 -*-
import time
import random
import pickle
import cookielib
import os
import urllib2,urllib
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

class Login(object):
    def __init__(self,account,pwd):
        self.account=account
        self.pwd=pwd

    def login_post(self):
        file_name='../Cookies/{0}.txt'.format(self.account)
        with open(file_name,'w') as f:
            f.write('')
        cookie=cookielib.MozillaCookieJar(file_name)
        handler=urllib2.HTTPCookieProcessor(cookie)
        opener=urllib2.build_opener(handler)
        agent_list = [
            'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36',
            'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0'
        ]
        login_url="""http://www.fenjianli.com/login/login.htm"""
        headers={
                    'Host': 'www.fenjianli.com',
                    'User-Agent': random.choice(agent_list),
                    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
                    'Referer': 'http://www.fenjianli.com/login/home.htm',
                    'Connection': 'keep-alive'
            }

        post_data={
            'username':self.account,
            'password':self.pwd,
            'rememberMe':1
        }
        login_data=urllib.urlencode(post_data)
        req=urllib2.Request(url=login_url,headers=headers,data=login_data)
        opener.open(req)
        cookie.save(ignore_discard=True, ignore_expires=True)
        print "获取",self.account,"账户cookie成功..........................."

def start_login():
    with open('account.txt','r') as f:
        name_pwds=f.readlines()
    for _id,name_pwd in enumerate(name_pwds):
        print '='*30+str(_id+1)+'='*30
        name_pwd_list=name_pwd.replace('\n','').split(',')
        print "开始获取",name_pwd_list[0],"账户cookie..................."
        login=Login(name_pwd_list[0],name_pwd_list[1])
        login.login_post()
        print '=' * 70
        time.sleep(5)

from Utlis.utlis_01 import *

def login_remain(fork=True,base=10):
    fork_cnt=0
    while fork==True:
        fork_cnt+=1
        print '{0} fork times {1}...'.format(genCurDateTime(),fork_cnt)
        start_login()
        SleepProgram(base=base)

if __name__=='__main__':
    login_remain()

你可能感兴趣的:(网络爬虫)