我试图从一个网站上获取一些数据,这个网站分配了一个会话cookie并生成了一个包含crump代码的HTML,我需要将其附加到URL以获取数据。当crum变量包含反斜杠时,我遇到了问题(HTTP 401未经授权)。。。因为面包屑是一个变量,所以我不知道如何在开头加上r'。我尝试过将.encode('string-escape')和.replace('\\','\\\\')添加到crump变量中,但我无法使其工作。在
我在python 2.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转换为/?
这里的问题是“\”是python中的转义字符,因此要使其成为不包含任何特殊字符的原始字符串,必须在该字符串之前添加一个“r”。你的代码应该是这样的
编辑:您可能需要对“\”进行编码才能正确格式化url请求。所以“\”应该是“%5C”。在
因为您不能使用
crumb = r'abc\xyz'
。我相信str.encode('string-escape')
函数可能会有所帮助。尝试:相关问题 更多 >
编程相关推荐