原因
这个错误是因为在Requests中传递的URL格式不正确而引起的。URL必须以http://或https://开头,如果URL没有HTTP协议头,Requests就无法判断它是http还是https,因此导致了这个错误。
解决办法
在指定URL时,需要确保URL字符串以"http://"或"https://"开头。如果没有协议头,请加上协议头并重新运行请求。另外,还可以通过以下方法来解决这个问题:
1)检查URL是否正确:检查传递给requests.get()方法的URL字符串是否正确。如果URL是通过变量传递的,可以打印出该变量并检查是否存在问题。
2)使用异常处理程序:可以使用异常处理程序来处理这种情况,例如:
try:
response = requests.get('http://invalid_url')
except requests.exceptions.MissingSchema as e:
print(str(e))
url = 'http://' + 'invalid_url'
response = requests.get(url)
在这个例子中,我们捕获了MissingSchema异常,并将URL字符串重新格式化为正确的URL格式,然后再次发送了请求。
3)检查代理设置:如果使用代理,可能需要检查代理设置是否正确。可以使用proxies参数来设置代理,例如:
proxies = {
"http": "http://user:password@proxy:port",
"https": "https://user:password@proxy:port",
}
response = requests.get("https://www.google.com", proxies=proxies)
在这个例子中,我们设置了HTTP和HTTPS代理,并将它们传递给proxies参数。
总之,错误"requests.exceptions.MissingSchema: Invalid URL {url}: No schema supplied. Perhaps you meant http://{url}?
"通常是因为URL格式不正确而引起的,可以通过上述方法来解决这个问题。