【发布时间】:2017-11-29 09:50:42
【问题描述】:
我正在尝试从分配会话 cookie 并生成包含我需要附加到 URL 以获取数据的 URL 的碎屑代码的 HTML 的网站中抓取一些数据。当 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 错误?
另外,如果我循环遍历多个面包屑,是否每次都需要清除会话 cookie?
更新:事实证明,反斜杠是从 HTML 中的 \u002F 引入的。我相信如果在将字符串添加到 URL 之前将它们转换为正斜杠,它会起作用。如何将字符串中的 \u002F 转换为 /?
【问题讨论】:
-
crumb = r'abc\xyz'足够了吗? -
我认为您需要对斜线进行 urlencode。
-
@Nuageux,我不能,因为我不知道字符串是什么(只是使用占位符进行演示)。
-
@idjaw,我确实尝试过 urlencode,所以它会引入 %5C,但它仍然给我 401。
标签: python url cookies urllib2 backslash