背景介绍
本项目旨在实现一个简易的网页请求程序,接收用户输入的URL,通过HTTP请求获取对应内容,返回HTML页面,并包含基础的错误处理机制。程序支持两种不同的URL输入方式,例如 https://example.com/submit` 和https://api.example.com/endpoint`,并确保本地运行,无需依赖外部服务器。
思路分析
- 网络请求实现:
使用requests库发送 POST 请求,将 URL 参数封装为请求体,处理HTTP状态码(如 200、500)。 - 响应处理:
在响应中提取状态码和内容,并根据错误码(如500)判断是否需要提示用户。 - 本地运行:
通过print输出结果,实现本地文件读写功能(如保存HTML内容)。 - 数据结构:
使用strptime处理时间格式,使用print显示结果,使用print输出状态码。
代码实现
1. 文件读写示例
import requests
def fetch_and_print(url, output_path="output.html"):
try:
response = requests.post(url, data={"url": url}, timeout=10)
response.raise_for_status() # 检查状态码
# 输出结果
with open(output_path, "w", encoding="utf-8") as f:
f.write(f"<p>响应内容:{response.text}</p>\n")
f.write(f"<p>状态码:{response.status_code}</p>\n")
except requests.exceptions.RequestException as e:
print(f"请求失败:{e}")
print("尝试保存内容:" + output_path)
with open(output_path, "w", encoding="utf-8") as f:
f.write("<p>请求失败:{e}</p>\n")
# 示例调用
fetch_and_print("https://example.com/submit")
fetch_and_print("https://api.example.com/endpoint")
2. 错误处理机制
import requests
def main():
try:
url = input("请输入 URL (例如: https://example.com/submit): ")
response = requests.post(url, data={"url": url}, timeout=10)
response.raise_for_status()
# 处理错误码
if response.status_code == 500:
print("<p>请求失败:请检查网络连接或参数错误</p>\n")
else:
print("<p>响应内容:{response.text}</p>\n")
print("<p>状态码:{response.status_code}</p>\n")
except requests.exceptions.RequestException as e:
print(f"请求失败:{e}")
if __name__ == "__main__":
main()
总结
本项目通过网络请求实现,展示了在本地运行、响应处理和错误控制方面的核心知识点。代码逻辑清晰,注释详细,能够帮助开发者理解网络请求机制和HTTP状态码的处理。学习价值体现在网络请求的实现细节、错误处理的逻辑设计以及本地文件操作的实践应用上。