我的知识记录

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 配合编码解码。

Python requests发起GET请求教程:最简单的网页抓取入门

标签:

更新时间:2026-09-14 20:48:47

上一篇:Python requests带Headers模拟浏览器:解决403反爬基础篇

下一篇:Python requests下载PDF附件:二进制保存与批量导出