Exemplo n.º 1
0
def return_mouser_cookie(**dict_args):
    ''' 
    dict_args: 关键字参数
        1. domain,域名,默认为'cn.mouser.com',也可以是其它的 但是必须保证cookie文本文件中设置了对应的cookie取值
        2. language,语言,必须为['english','chinese']的一种
        3. url_cookie,cookie文本文件绝对路径,必须仿照现有的文本文件格式
    2013年 08月 02日 星期五 17:07:34 CST
    '''
    fun         = 'function return_mouser_cookie of %s' % file_name
    import copy
    mouser_c = pickle.loads(read_hc_file('','',file_url=os.path.join(DIRNAME,file_mc_template)))
    ''' 获取一个基本的cookie模板对象 '''
    cookie_obj = mouser_c['.mouser.com']['/']['ASP.NET_SessionId']#下次找机会 用相关模块设置空cookie模板对象 2013年 08月 02日 星期五 17:15:59 CST

    ''' 此时mouser_c 为字典{}类型 需要清空内部的 k-v键字键值数据 '''
    mouser_c.clear()

    ''' domain path name value 从httpfox工具中获取下列列表数据  '''
    domain      = dict_args.get('domain', 'www.mouser.com')#默认 cn.mouser.com域名网址
    language    = dict_args.get('language','english')#默认 英文文本内容 美元货币富豪
    if not dict_language.has_key(language):
        raise ValueError,'### %s line %s invalid language: %s ###' % (fun,59,language)
    language_cookie = ('.mouser.com','/','preferences',dict_language[language])

    hc      = open(os.path.join(DIRNAME,file_mc_access),'r').read()
    re_cookie   = '===== start cookie on domain: %s =====(.*?)===== end cookie =====' % domain
    res_cookie  = re.findall(re_cookie, hc, flags=16)
    if res_cookie:
        list_line       = [one for one in res_cookie[0].split('\n') if one]
        ''' name value path domain expires ~N~R~O cookie~Z~D5个~G~M~A~^~@� '''
        list_nvpde      = [one.split('\t') for one in list_line]
        list_dpnv       = [(d,p,n,v) for n,v,p,d,e in list_nvpde if n!= 'preferences']#过滤preferences选项
        list_dpnv.append(language_cookie)#加上特殊设置的preferences选项
    else:
        raise ValueError,'### %s line %s analyse list_dpnv error and return []###' % (fun,72)

    if debug: print '%s cookie list_dpnv(domain path name value) is: \n' % fun,list_dpnv

    for domain,path,name,value in list_dpnv:
        cookie_new          = copy.deepcopy(cookie_obj)
        cookie_new.domain   = domain
        cookie_new.path     = path
        cookie_new.name     = name
        cookie_new.value    = value
        if not mouser_c.has_key(domain):
            mouser_c[domain] = {}
        dd = mouser_c[domain]
        if not dd.has_key(path):
            dd[path] = {}
        dp = dd[path]
        if not dp.has_key(name):
            dp[name] = cookie_new
        dn = dp[name]
    return mouser_c