python - 如何在 Python 中处理包含空格的链接

标签 python url request broken-links

我正在尝试从网页中提取链接,然后在我的网络浏览器中打开它们。我的 Python 程序能够成功提取链接,但有些链接之间有空格,无法使用 request module 打开。

例如 example.com/A, B C 它不会使用请求模块打开。但是,如果我将其转换为 example.com/A,%20B%20C,它将打开。 python 中是否有一种简单的方法可以用 %20 填充空格?

`http://example.com/A, B C` ---> `http://example.com/A,%20B%20C`

我想将它们之间有空格的所有链接转换为上述格式。

最佳答案

urlencode其实就是取一个字典,例如:

>>> urllib.urlencode({'test':'param'})
'test=param'`

你实际上需要这样的东西:

import urllib
import urlparse

def url_fix(s, charset='utf-8'):
    if isinstance(s, unicode):
        s = s.encode(charset, 'ignore')
    scheme, netloc, path, qs, anchor = urlparse.urlsplit(s)
    path = urllib.quote(path, '/%')
    qs = urllib.quote_plus(qs, ':&=')
    return urlparse.urlunsplit((scheme, netloc, path, qs, anchor))

然后:

>>>url_fix('http://example.com/A, B C')    
'http://example.com/A%2C%20B%20C'

取自How can I normalize a URL in python

关于python - 如何在 Python 中处理包含空格的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049729/

相关文章:

Python 求和高阶函数

python - while之后这个函数还在执行吗?

java - 将 'forward slash' 放在末尾对 url 有什么区别?

javascript - URL 验证正则表达式 - URL 仅对 http ://有效

ios - HEADER 请求 allHeaderFields 不工作

javascript - 如何有条件地发送异步请求作为 JavaScript 中的预请求?

c# - 我应该使用哪种技术来开发高性能 Web 应用程序

python - 在循环结束时检查是否需要再次运行

windows - 无法使 url 指向 Tomcat 中新重命名的目录

python - 如何在使用带有 request.post 方法的文件参数上传文件时应用压缩