学姐悄悄说,requests库让爬取网络数据变得超级简单哦,快来学习吧
大家好呀~我是你们的Python学姐!今天要跟小可爱们分享一个超级实用的Python库 —— requests!它就像是我们在网络世界遨游时的神奇工具,可以帮我们轻松获取网页内容、下载文件,甚至是调用各种网络接口呢。不管你是想做数据分析、网络爬虫,还是开发自己的小程序,requests都是必不可少的好帮手哦~
安装requests库
首先,我们需要安装requests库。打开命令行窗口,输入以下命令就可以啦:
pip install requests
发送第一个GET请求
GET请求就像是我们在浏览器地址栏输入网址一样简单呢。让我们来试试访问百度首页:
import requests
# 发送GET请求
response = requests.get('https://www.baidu.com')
print(f'状态码: {response.status_code}')
print(f'网页编码: {response.encoding}')
print(f'网页内容长度: {len(response.text)}')
小贴士:状态码200表示请求成功,404表示页面不存在,其他常见状态码我们后面再说哦~
给请求加上参数
有时候我们需要在URL后面加上一些参数,比如搜索关键词。requests让这变得超级简单:
import requests
# 使用params参数传递查询参数
params = {
'keyword': 'Python教程',
'page': 1
}
response = requests.get('https://example.com/search', params=params)
print(f'完整URL: {response.url}')
自定义请求头
有些网站需要我们伪装成浏览器才能访问,这时候就要设置请求头啦:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get('https://example.com', headers=headers)
POST请求发送数据
如果要提交表单或发送数据,我们就要用POST请求啦:
import requests
# 发送POST请求
data = {
'username': 'pythongirl',
'message': '我爱Python!'
}
response = requests.post('https://example.com/submit', data=data)
处理JSON数据
现在很多网站的API都是返回JSON格式的数据,requests可以直接帮我们解析:
import requests
response = requests.get('https://api.example.com/data')
# 自动将JSON转换为Python字典
json_data = response.json()
print(json_data)
小贴士:记得在使用json()方法前确保返回的确实是JSON格式哦,不然会报错的~
下载文件
下载文件也是超级简单的:
import requests
# 下载文件
response = requests.get('https://example.com/cute_cat.jpg', stream=True)
with open('cute_cat.jpg', 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
异常处理
网络请求可能会遇到各种问题,所以要学会处理异常:
import requests
from requests.exceptions import RequestException
try:
response = requests.get('https://example.com', timeout=5)
response.raise_for_status() # 如果状态码不是200,就抛出异常
except RequestException as e:
print(f'哎呀,出错啦:{e}')
实战小练习
来做个小练习吧!试试获取一个天气API的数据:
import requests
def get_weather(city):
# 这里使用免费的天气API
url = f'http://wthrcdn.etouch.cn/weather_mini?city={city}'
try:
response = requests.get(url)
data = response.json()
if data['status'] == 1000:
weather = data['data']['forecast'][0]
print(f"{city}今天的天气是:{weather['type']}")
print(f"温度范围:{weather['low']} ~ {weather['high']}")
else:
print('找不到该城市的天气信息呢~')
except:
print('获取天气信息失败啦,要不要稍后再试试看?')
# 试试查询北京的天气
get_weather('北京')
小伙伴们,今天的Python学习之旅就到这里啦!记得动手敲代码,有问题随时在评论区问我哦。requests库还有很多有趣的功能等着你们去探索呢!要记住,只有多写代码才能提高水平哦~祝大家学习愉快,Python学习节节高!
温馨提示:在爬取网站数据时,一定要注意遵守网站的robots.txt规则和使用协议哦,做个有道德的程序媛!