Python requests发起GET请求教程:最简单的网页抓取入门
用Python requests库发起第一个GET请求,获取网页HTML源码,讲解status_code、text、encoding等核心用法,适合零基础入门网页抓取。
场景痛点
工作中经常需要从固定网页上复制一段数据、下载一段接口返回。手动打开浏览器、复制粘贴、再整理成表格,一次两次还能忍,一天重复几十次就是纯体力活。用Python的requests库,三行代码就能把网页源码拉到本地,后续想怎么解析都行,是自动化抓取的第一步。
用到的库
pip install requests beautifulsoup4 lxml
完整代码
# 导入requests库
import requests
def fetch_html(url):
"""发起GET请求,返回网页HTML文本"""
# 发起GET请求,设置超时时间,避免一直卡住
resp = requests.get(url, timeout=10)
# 检查HTTP状态码,200表示成功
print("状态码:", resp.status_code)
# 手动设置编码,防止中文乱码
resp.encoding = resp.apparent_encoding
# 打印响应头和内容长度
print("响应类型:", resp.headers.get("Content-Type"))
print("内容长度:", len(resp.text), "字符")
# 返回网页源码
return resp.text
def main():
# 目标网址(这里用示例网址做演示)
url = "https://example.com"
try:
html = fetch_html(url)
# 打印前500个字符,看看抓到了什么
print("=" * 40)
print(html[:500])
# 保存到本地文件,方便后续分析
with open("page.html", "w", encoding="utf-8") as f:
f.write(html)
print("已保存到 page.html")
except requests.exceptions.Timeout:
print("请求超时,请检查网络")
except requests.exceptions.ConnectionError:
print("连接失败,网址可能不可达")
except Exception as e:
print("发生错误:", e)
if __name__ == "__main__":
main()
代码讲解
requests.get(url)是最核心的一行,它会向服务器发起一次HTTP GET请求,返回一个Response对象。resp.status_code是HTTP状态码,200表示成功,404表示页面不存在,500表示服务器出错,写抓取脚本时一定要先判断它。resp.text是响应体的字符串形式,也就是网页HTML源码;resp.apparent_encoding是requests自动猜测的编码,赋给resp.encoding可以解决中文乱码。timeout=10必须设置,否则网络卡住时程序会无限等待。- 用
try...except捕获超时和连接错误,脚本才不会一崩到底。
运行结果
运行后控制台会打印状态码、响应类型、内容长度和前500个字符,当前目录下会生成一个 page.html 文件,用浏览器打开就能看到和网页一致的内容。
注意事项
- 抓取前先看网站根目录下的
robots.txt,确认目标页面允许被抓取。 - 不要高频请求同一台服务器,建议每次请求间隔1秒以上,避免给对方造成压力。
- 部分网站需要登录或携带请求头才能访问,裸GET可能返回403或登录页,后续文章会讲如何加Headers。
- 中文网站经常出现乱码,记得设置
resp.encoding或直接用resp.content配合编码解码。

更新时间:2026-09-14 20:48:47
上一篇:Python requests带Headers模拟浏览器:解决403反爬基础篇