Python 机械化设置 cookie
Python Mechanize set cookie
下面的代码有效。
cookiejar =cookielib.LWPCookieJar()
br.set_cookiejar(cookiejar)
c0 = cookielib.Cookie(version=0, name='_mobile_sess', value='BAh7ByIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoQX2NzcmZfdG9rZW4iLTY4YWYxODc5ZmVlNTRhMDM4YzUwN2VjMmNiMWJkMjZlMTIxNDViNWM%3D--a18dca22d18735ebb9c4f91f595bae999e138f5e', port=None, port_specified=False, domain='.twitter.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=True, expires=1531884528, discard=False, comment=None, comment_url=None, rest={'HTTPOnly': None}, rfc2109=False)
cookiejar.set_cookie(c0)
但是,由于某些原因,我必须将 c0 存储为字符串。
所以实际上,c0 是一个 unicode 字符串
c0 = u"cookielib.Cookie(version=0, name='_mobile_sess', value='BAh7ByIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoQX2NzcmZfdG9rZW4iLTY4YWYxODc5ZmVlNTRhMDM4YzUwN2VjMmNiMWJkMjZlMTIxNDViNWM%3D--a18dca22d18735ebb9c4f91f595bae999e138f5e', port=None, port_specified=False, domain='.twitter.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=True, expires=1531884528, discard=False, comment=None, comment_url=None, rest={'HTTPOnly': None}, rfc2109=False)"
所以
cookiejar.set_cookie(c0)
return错误
if cookie.domain not in c: c[cookie.domain] = {}
AttributeError: 'Text' object has no attribute 'domain'
如何解决这个问题?如何将 unicode 字符串 c0 转换为 cookiejar.set_cookie(c0)
可以接受的 "something"?
可以使用exec
语句执行存储在c0
中的字符串
exec "c0 = " + c0
例如:
>>> exec u"print('hello')"
hello
参见:How do I execute a string containing Python code in Python?
下面的代码有效。
cookiejar =cookielib.LWPCookieJar()
br.set_cookiejar(cookiejar)
c0 = cookielib.Cookie(version=0, name='_mobile_sess', value='BAh7ByIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoQX2NzcmZfdG9rZW4iLTY4YWYxODc5ZmVlNTRhMDM4YzUwN2VjMmNiMWJkMjZlMTIxNDViNWM%3D--a18dca22d18735ebb9c4f91f595bae999e138f5e', port=None, port_specified=False, domain='.twitter.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=True, expires=1531884528, discard=False, comment=None, comment_url=None, rest={'HTTPOnly': None}, rfc2109=False)
cookiejar.set_cookie(c0)
但是,由于某些原因,我必须将 c0 存储为字符串。 所以实际上,c0 是一个 unicode 字符串
c0 = u"cookielib.Cookie(version=0, name='_mobile_sess', value='BAh7ByIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoQX2NzcmZfdG9rZW4iLTY4YWYxODc5ZmVlNTRhMDM4YzUwN2VjMmNiMWJkMjZlMTIxNDViNWM%3D--a18dca22d18735ebb9c4f91f595bae999e138f5e', port=None, port_specified=False, domain='.twitter.com', domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=True, expires=1531884528, discard=False, comment=None, comment_url=None, rest={'HTTPOnly': None}, rfc2109=False)"
所以
cookiejar.set_cookie(c0)
return错误
if cookie.domain not in c: c[cookie.domain] = {}
AttributeError: 'Text' object has no attribute 'domain'
如何解决这个问题?如何将 unicode 字符串 c0 转换为 cookiejar.set_cookie(c0)
可以接受的 "something"?
可以使用exec
语句执行存储在c0
exec "c0 = " + c0
例如:
>>> exec u"print('hello')"
hello
参见:How do I execute a string containing Python code in Python?