Python网络请求实践总结与示例代码
在前面的部分,我们已经学习了如何使用Python进行网络请求,特别是如何使用requests库来处理HTTP请求。现在,让我们通过一个综合示例来总结我们所学,并展示如何在实际情况中应用这些知识。
这个示例将展示如何使用requests库从网站上获取数据,并对数据进行简单处理。
示例项目: 获取国际空间站(ISS)当前位置
我们的示例项目会定期查询OpenNotify API,这是一个提供国际空间站ISS位置和其他宇航信息的公共API。
- 查询ISS的当前位置
首先,我们需要使用requests发送一个GET请求到OpenNotify API的ISS位置端点。
import requests
def get_iss_location():
response = requests.get("http://api.open-notify.org/iss-now.json")
response.raise_for_status() # 确保请求成功
# 获取响应中的ISS位置数据
iss_position = response.json()['iss_position']
return iss_position
# 测试函数
iss_location = get_iss_location()
print(f"The ISS current location is: {iss_location}")
- 处理异常
网络请求可能会因多种原因失败。让我们添加异常处理来确保我们的程序能优雅地处理这些情况。
def get_iss_location_safe():
try:
response = requests.get("http://api.open-notify.org/iss-now.json", timeout=5)
response.raise_for_status()
iss_position = response.json()['iss_position']
return iss_position
except requests.exceptions.HTTPError as errh:
print ("Http Error:",errh)
except requests.exceptions.ConnectionError as errc:
print ("Error Connecting:",errc)
except requests.exceptions.Timeout as errt:
print ("Timeout Error:",errt)
except requests.exceptions.RequestException as err:
print ("OOps: Something Else",err)
# 测试函数
iss_location = get_iss_location_safe()
print(f"The ISS current location is: {iss_location}")
- 使用参数
def get_iss_current_location(latitude, longitude):
params = {
'lat': latitude,
'lon': longitude,
}
response = requests.get("http://api.open-notify.org/iss-now.json", params=params)
response.raise_for_status()
location_data = response.json()
return location_data
# 测试函数
latitude = 40.71 # 示例纬度
longitude = -74 # 示例经度
location_data = get_iss_current_location(latitude, longitude)
print(f"The ISS current location data is: {location_data}")
通过这些示例代码,我们可以看到requests是如何在实际应用中使用的。对于任何网络请求任务,都是类似的步骤——发送请求、处理响应和异常。学习如何构建这些请求并处理返回数据对于进行网络爬虫来说是至关重要的。
在编写爬虫时,记住始终要遵守目标网站的使用条款,并尊重它们关于自动化访问的规则。这个总结示例仅用于教育目的,介绍了如何使用requests库进行有效和负责任的网络请求。
下一步
在下一节教程中,我们将探讨Python爬虫技术学习路径中的重要一环——数据解析技术。这是提取网络数据的关键步骤。我们将涵盖以下内容:
- 初探
BeautifulSoup lxml与XPath的使用- 正则表达式在爬虫中的应用