爬取帖子出错 Invalid URL '#': No scheme supplied. Perhaps you meant https://#?
时间: 2024-02-13 19:59:41 浏览: 328
这个错误提示是因为在获取帖子链接时,有些网页中的链接是相对路径,而不是完整的URL地址。这种情况下,requests库会默认在链接前加上当前页面的URL,导致链接变成了无效的URL。
解决这个问题的方法是在获取帖子链接时,判断链接是否为完整的URL地址,如果不是,需要加上网站的域名部分,将其转换成完整的URL地址。可以使用urljoin方法实现这个功能,例如:
```python
from urllib.parse import urljoin
link = article.find("a")["href"]
if not link.startswith("http"):
link = urljoin(url, link) # 将相对路径转换成完整的URL地址
```
在这里,我们引入了urllib库中的urljoin方法,将相对路径转换成完整的URL地址,其中url参数是当前页面的URL地址。然后,我们可以使用转换后的链接来访问帖子详情页面,获取帖子的内容。
相关问题
requests.exceptions.MissingSchema: Invalid URL 'h': No scheme supplied. Perhaps you meant https://h?
这个错误提示 `requests.exceptions.MissingSchema: Invalid URL 'h': No scheme supplied.` 表示你在尝试使用 `requests` 库发送HTTP请求时,提供的URL缺少有效的协议(如http或https)。在这个例子中,你输入的是 `'h'`,它不是一个合法的URL,因为它没有指定任何基本的协议(比如 `http://` 或 `https://`)。
错误提示中的 "Perhaps you meant" 提醒可能是你想访问的是 "https://h",意思是建议你加上 `https://`。正确的做法应该是提供一个完整的、包含了协议和主机名的URL,例如 `https://www.example.com`。
如果你只是想在代码中演示这个错误,可以这样修改你的URL:
```python
try:
response = requests.get('h', verify=False) # 添加 http:// 或 https://
except requests.exceptions.MissingSchema as e:
print(e)
```
requests.exceptions.MissingSchema: Invalid URL 'www.tipdm.com': No scheme supplied. Perhaps you meant https://www.tipdm.com?
requests.exceptions.MissingSchema是一个Python的请求库(requests)中抛出的异常,通常发生在你试图创建一个Request对象时,提供的URL缺少必要的协议(如http、https等)。在给出的错误信息中,`Invalid URL 'www.tipdm.com': No scheme supplied`表明`www.tipdm.com`这个地址没有指定任何协议头,比如http或https。
一个完整的URL应该包含协议(如'http://' 或 'https://'),主机名(如`www.tipdm.com`),以及端口(如果有的话)。系统认为这是一个无效的URL,因为它看起来像是相对路径而不是绝对路径。
正确的做法是,在URL字符串前加上适当的协议,例如:
```python
url = "https://www.tipdm.com"
response = requests.get(url)
```
如果你知道URL应该是安全的并且默认使用https,也可以直接写成`requests.get('www.tipdm.com')`,但这种方式更易导致这种异常。
阅读全文