问题原因
requests.exceptions.MissingSchema: Invalid URL {url}: No schema supplied. Perhaps you meant http://{url}?
这个错误意味着你尝试对一个无效的URL进行请求。 “missing schema” 意味着你的URL缺少HTTP协议、HTTPS协议或其他协议的前缀。
举个例子,如果你使用 requests.get('google.com')
,就会抛出这个异常,因为此URL缺少协议前缀。
解决办法
一般而言,解决这个问题非常简单:
- 为URL添加协议前缀,通常是
http://
或https://
。 - 确保你的URL正确格式化,包括协议前缀、域名、路径等组成部分。
- 确认你没有使用类似
variables = { 'url': 'example.com' }
的字典作为URL参数,这会导致请求错误。
下面是一些常见的方法来避免这个错误:
方法1:检查URL地址
确保你的URL开头以 http://
或 https://
开头。例如,google.com
需要改成 https://google.com
。
方法2:使用合法的URL字符串
使用一个合法的URL字符串作为参数,如 https://google.com
。
方法3:使用urllib.parse.urljoin方法
urllib.parse.urljoin
方法可以帮助你构建正确格式的URL。
from urllib.parse import urljoin
base_url = 'https://example.com'
path = 'search'
full_url = urljoin(base_url, path)
response = requests.get(full_url)
方法4:确认没有使用变量
如果你使用变量来表示URL,请确保你将变量名正确传递给函数。
url = 'https://example.com'
response = requests.get(url)
# 错误的用法
response = requests.get({ 'url': url })
# 正确的用法
response = requests.get(url)
综上,requests.exceptions.MissingSchema: Invalid URL {url}: No schema supplied. Perhaps you meant http://{url}?
这个错误意味着你需要检查URL地址是否正确,是否缺少协议前缀,或者使用正确的API来解决问题。