将带有反斜杠字符的变量添加到 URL 字符串时出现 Python 错误

标签 python url cookies urllib2 backslash

我正在尝试从分配 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/

相关文章:

python - 如何在 url conf 中获取该字符串的正确正则表达式?

azure - 强制 HTTPS 连接到 Azure Blob 存储

url - 在 Oracle APEX 中将多个值从一个页面传递到另一个页面

python - pandas.read_sql_query() 抛出 TypeError : 'NoneType' object is not iterable

python - 如何在 Simulink 的 MATLAB 函数中索引数组值?

python:使用多处理共享巨大的字典

java - Android webview cookie 返回 null

Python 3 - 带有 urllib.request 返回 HTML 数据的 POST 请求

javascript - 使用 AJAX 调用恢复 session

swift - 加载单独的 WKWebViews 时单独的 cookies?