程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

学姐悄悄说,requests库让爬取网络数据变得超级简单,快来学习吧

hfteth 2025-03-03 18:45:28 技术文章 35 ℃

学姐悄悄说,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规则和使用协议哦,做个有道德的程序媛!

Tags:

最近发表
标签列表