问题原因
该问题的错误信息 “requests.exceptions.MissingSchema: Invalid URL {url}: No schema supplied. Perhaps you meant http://{url}?” 意味着请求的URL中没有标明协议,例如http或https等。这通常出现在以下两种情况下:
- 代码中没有给出正确的URL格式,缺失协议名称。
- URL 在输入的时候出现问题,缺少了协议前缀。
接下来会分别介绍这两种情况的解决办法。
解决办法
- 缺失协议名称
当代码中没有给出正确的URL格式,例如没有指定URL的协议名称时,就会出现 “requests.exceptions.MissingSchema” 的错误信息。在这种情况下,应该修改代码,添加正确的URL协议前缀,例如 http://
或 https://
等。以下是一个修改过的例子:
import requests
url = "http://example.com"
response = requests.get(url)
上述例子在URL前添加了 http://
协议前缀,确保了请求可以正常发送到网站。
- URL 输入错误
当 URL 在输入的时候出现问题,例如没有给出正确的协议前缀,就会出现 “requests.exceptions.MissingSchema” 的错误信息。在这种情况下,应该检查输入的URL,确保它的协议前缀(或协议名称)正确。如果协议名称确实缺失,应该添加它的名称。
另外,也可以使用Python中urllib库中的urlparse函数来处理URL。该函数位于urllib库中,可以提取出URL中的各个组成部分,包括协议,主机名,端口号,路径名等。以下是一个使用 urlpsrse 的例子:
import requests
from urllib.parse import urlparse
url = "example.com"
parsed_url = urlparse(url)
if not parsed_url.scheme:
url = "http://" + url
response = requests.get(url)
上述代码中, urlparse
函数可以从给出的URL中解析出协议前缀,并将其存储在URL对象的 scheme
属性中。如果 scheme
属性不存在,则表示缺失了协议名称,此时可以手动添加协议名称,然后使用修改过的 URL 发送请求。
通过以上两种方法可以解决 “requests.exceptions.MissingSchema” 的问题。