我正在尝试使用 Python 对 URL 进行 API 测试,我有以下代码块
def simple_get(url):
try:
page_response = requests.get(page_link, timeout=5)
if page_response.status_code == 200:
# extract
else:
print(page_response.status_code)
# notify, try again
except requests.Timeout as e:
print("It is time to timeout")
print(str(e))
except # other exception
当我运行它时,给我以下错误
File "<ipython-input-16-6291efcb97a0>", line 11
else:
^
IndentationError: expected an indented block
我不明白为什么当我已经缩进了"else"语句时,笔记本仍然要求缩进
问题是你没有告诉程序当第一个条件满足时该怎么做(if 语句(。如果你不确定在if中做什么,你可以在"pass"中使用python构建。
if page_response.status_code == 200:
pass
else:
print(page_response.status_code)
这是Python
开始编码的一个非常基本的概念:
以#
开头的行在代码块中被忽略。
这里的代码
if page_response.status_code == 200:
# extract
else:
print(page_response.status_code)
直译为
if page_response.status_code == 200:
else:
print(page_response.status_code)
因此产生IndentationError
.
您可以通过在if
语句中放置至少pass
命令或任何工作行来解决这个问题。
类似的问题之前已经问过:
Python:预期一个缩进块
import requests
from bs4 import BeautifulSoup
def simple_get(url):
try:
page_response = requests.get(url, timeout=5)
if page_response.status_code == 200:
print(page_response.status_code)
pass
# extract
else:
print(page_response.status_code)
# notify, try again
except requests.Timeout as e:
print("It is time to timeout")
print(str(e))
simple_get("https://www.nytimes.com/")