我正试图从一个网站上收集一些数据,该网站分配一个会话cookie,并生成一个HTML,其中包含一个crumb代码,我需要将其附加到一个URL以获取数据。当crumb变量包含反斜杠时,我遇到了问题(未经授权的HTTP 401)。。。因为crumb是一个变量,所以我不知道如何将r'添加到开头。我已经尝试将.encode('string-escape')和.replace('\\','\\\')添加到crumb变量中,但是我无法使其工作。
我的Python2.7代码如下:
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.open('http://www.sample.com')
#Some code here that looks for crumb code in HTML
crumb = 'abc\xyz'
#This line fails when crumb contains a backslash
opener.open('http://www.sample.com/data=' + crumb)
cj.clear()
有人知道当我试图打开包含反斜杠的URL字符串时如何避免401错误吗?
另外,如果我在多个面包屑中循环,是否有必要每次清除会话cookie?
更新:原来反斜杠是从HTML中的\u002F引入的。我相信,如果在将字符串添加到URL之前将它们转换为正斜杠,这将起作用。如何将字符串中的\u002F转换为/?
最佳答案
因为你不能使用crumb = r'abc\xyz'
。我相信str.encode('string-escape')
函数可能会有帮助。尝试:
crumb = 'abc\xyz'
crumb.encode('string-escape')