Requests报”requests.exceptions.InvalidURL: Invalid URL {url}: No schema supplied “的原因以及解决办法

  • Post category:Python

报错原因:

报错信息中的”requests.exceptions.InvalidURL: Invalid URL {url}: No schema supplied”的原因是因为请求的链接缺少了协议(http/https)的声明,例如”www.example.com”,应该修改成”http://www.example.com” 或者 “https://www.example.com”。

解决办法:

方式一:添加协议声明

如果你确定请求链接正确,解决办法就是在请求链接(即url)前加上协议声明。例如:

import requests

response = requests.get("http://www.example.com")

import requests

response = requests.get("https://www.example.com")

方式二:使用urljoin处理链接

如果有之前没有协议声明的链接需要处理,可以使用urljoin方法实现链接处理。例如:

import requests
from urllib.parse import urljoin

base_url = "https://www.example.com/"
url = "about-us/contact"               # 缺少协议声明的链接

absolute_url = urljoin(base_url, url)  # 处理链接

response = requests.get(absolute_url)  # 请求链接

以上是处理”http://www.example.com” 或者 “https://www.example.com” 链接和处理缺少协议声明的链接的两种方法,在实际使用中需要根据具体情况进行选择。