用 Python 获取网络资源(一):Requests 库入门与实践
学习概述
在网络数据采集领域,Python 有着得天独厚的优势,这得益于其丰富的第三方库生态。其中,requests 库是最简单、最人性化的 HTTP 客户端库之一,它让发送 HTTP 请求变得像访问本地文件一样简单。
通过本篇的学习,你将掌握:
- 使用 Requests 库发送 HTTP 请求
- 处理服务器响应,获取文本和二进制内容
- 设置请求头,模拟浏览器访问
- 使用正则表达式初步提取网页信息
- 了解 IP 代理的基本使用场景
用 Python 获取网络数据
为什么选择 Requests 库?
- 简单易用:API 设计直观,学习成本低
- 功能全面:支持 GET、POST 等各种 HTTP 方法,自动处理编码、Cookie 等
- 社区活跃:文档完善,遇到问题容易找到解决方案
初识 Requests:获取网页 HTML
下面是一个最简单的例子,演示如何使用 requests 获取搜狐首页的 HTML 代码:
import requests
# 发送 GET 请求
resp = requests.get('https://www.sohu.com/')
# 检查响应状态码(200 表示成功)
if resp.status_code == 200:
# 打印网页 HTML 源代码
print(resp.text[:1000])
else:
print(f'请求失败,状态码:{resp.status_code}')
代码解析:
requests.get()发送 GET 请求,返回一个Response对象;resp.status_code获取 HTTP 状态码;resp.text获取响应内容的文本形式(自动解码)。
从 HTML 中提取信息:正则表达式初试
获取 HTML 只是第一步,我们通常需要从中提取特定信息。正则表达式是文本匹配的利器,下面示例从搜狐首页提取新闻标题和链接:
import re
import requests
# 匹配<a>标签中带有 title 属性的链接
pattern = re.compile(r'<a.*?href="(.*?)".*?title="(.*?)".*?>')
resp = requests.get('https://www.sohu.com/')
if resp.status_code == :
all_matches = pattern.findall(resp.text)
href, title all_matches[:]:
()
()
( * )


