python - 如何使用 `urlparse` 检查 URL 是否有效?

标签 python urllib2 url-parsing urlparse

我想在打开 URL 以读取数据之前检查它是否有效。

我正在使用 urlparse 包中的函数 urlparse:

if not bool(urlparse.urlparse(url).netloc):
 # do something like: open and read using urllin2

但是,我注意到一些有效的 URL 被视为已损坏,例如:

url = upload.wikimedia.org/math/8/8/d/88d27d47cea8c88adf93b1881eda318d.png

此 URL 有效(我可以使用浏览器打开它)。

有没有更好的方法来检查 URL 是否有效?

最佳答案

你可以检查 url 是否有 scheme:

>>> url = "no.scheme.com/math/12345.png"
>>> parsed_url = urlparse.urlparse(url)
>>> bool(parsed_url.scheme)
False

如果是这种情况,您可以替换方案并获得一个真实有效的 url:

>>> parsed_url.geturl()
"no.scheme.com/math/12345.png"
>>> parsed_url = parsed_url._replace(**{"scheme": "http"})
>>> parsed_url.geturl()
'http:///no.scheme.com/math/12345.png'

关于python - 如何使用 `urlparse` 检查 URL 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259134/

相关文章:

python - 使用 Python 导出维基百科

Python - 从 aspx 表单下载文件

c++ - 将 URL 拆分为主机、端口和资源 - C++

Python 3.4 多重处理,代码不会超过循环(包含队列)

python: pandas .describe - 如何将结果放入变量中?

python - python 2.7 urllib2 和 json 中的脚本引发 unicode 错误

python - 使用 python 在 json 中处理转义的 url 字符串

javascript - Firefox 中的 window.location.hash 问题

python - IronPython WPF 加载新窗口

python - 抓取 160.000 页 - 太慢了