我正在尝试从分配 session cookie 并生成包含面包屑代码的 HTML 的网站上抓取一些数据,我需要将其附加到 URL 以获取数据。当 crumb 变量包含反斜杠时,我遇到了问题(HTTP 401 Unauthorized)...因为 crumb 是一个变量,所以我不知道如何将 r' 添加到开头。我尝试将 .encode('string-escape') 和 .replace('\\','\\\\') 添加到 crumb 变量,但我无法让它工作。
我的代码在 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 错误?
此外,如果我循环遍历多个面包屑,是否有必要每次都清除 session cookie?
更新:事实证明,反斜杠是从 HTML 中的\u002F 引入的。我相信如果我在将字符串添加到 URL 之前将它们转换为正斜杠,它就会起作用。如何将字符串中的\u002F 转换为/?
最佳答案
因为您不能使用 crumb = r'abc\xyz'
。我相信 str.encode('string-escape')
函数可能会有所帮助。尝试:
crumb = 'abc\xyz'
crumb.encode('string-escape')
关于将带有反斜杠字符的变量添加到 URL 字符串时出现 Python 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44761693/