资讯动态

01_requests网页请求入门

发布时间:2026/9/29 6:14:32 来源:尧图企业网站定制
很多人听到爬虫两个字就觉得很复杂要学好多东西。其实入门级的数据采集特别简单——你只需要几行代码就能把一个网页的内容拿下来。这是「Python 数据实战」系列的第一篇。我们从最基础的requests库开始一步一步带你从零基础到能自己抓数据、洗数据、分析数据、做图表。今天这篇是最简单的发一个请求拿到一个网页。一、requests 是什么你可以把requests理解成 Python 版的浏览器。你平时打开浏览器输入一个网址回车然后网页就出来了。这个过程背后其实就是浏览器向服务器发了一个请求服务器把网页内容响应回来浏览器把它渲染成你看到的样子。requests干的就是同样的事——只不过它不渲染页面而是把网页的原始代码HTML直接拿给你。为什么用requests不用别的因为它是 Python 里最简单、最流行、文档最全的 HTTP 请求库。没有之一。二、安装一行命令搞定打开你的终端Windows 是命令提示符或 PowerShellMac 是终端输入pipinstallrequests等它跑完就行了。如果你的环境里pip不行试试pip3pip3installrequests装完之后可以验证一下装没装上pip show requests能看到版本号就说明装好了。写这篇的时候最新版本是 2.32.x你看到的可能比这个新没关系用法是一样的。三、第一个请求3行代码拿到网页直接上代码别害怕就3行importrequests responserequests.get(https://www.example.com)print(response.text)就这么多。我们一行一行说。第一行import requests—— 把刚才装的库引进来。就像打开工具箱盖子。第二行response requests.get(https://www.example.com)—— 向 example.com 这个网址发了一个 GET 请求把服务器返回的结果存在response这个变量里。第三行print(response.text)—— 打印响应的文本内容也就是网页的 HTML 源码。你把这段代码存成demo.py然后运行python demo.py运行之后你会看到一大段 HTML 代码打印出来。那就是 example.com 这个网页的全部内容。恭喜你你已经完成了人生第一个数据采集程序。四、响应状态码网页到底拿到了没有光拿到response还不够你得知道请求到底成功了没有。怎么判断看状态码。importrequests responserequests.get(https://www.example.com)print(response.status_code)# 输出 200status_code就是状态码。常见的几个你得认识状态码含义通俗解释200OK成功拿到了一切正常301/302重定向网页搬家了让你去新地址404Not Found页面不存在403Forbidden服务器拒绝了你不让看500Internal Server Error服务器自己崩了做数据采集时最理想的就是 200。如果拿到的是 403说明对方网站检测到你是爬虫把你拒了。这种情况后面我们会讲怎么应对。写代码的时候最好判断一下状态码别瞎往下跑importrequests responserequests.get(https://www.example.com)ifresponse.status_code200:print(请求成功)print(response.text[:500])# 只打印前500个字符免得刷屏else:print(f请求失败状态码{response.status_code})五、response 对象里还有什么response不只有text和status_code它里面东西挺多的。常用的几个importrequests responserequests.get(https://www.example.com)print(response.status_code)# 状态码print(response.text)# 响应文本字符串形式print(response.content)# 响应内容字节形式图片/文件用这个print(response.headers)# 响应头信息print(response.encoding)# 编码方式print(response.url)# 实际请求的 URL重定向后可能不一样有一个新手容易踩的坑中文乱码。有些网页的编码检测不准response.text拿到的中文是乱码。这时候你可以手动指定编码response.encodingutf-8print(response.text)或者更智能一点从内容里自动推断response.encodingresponse.apparent_encoding这个小技巧在抓中文网站的时候特别好用。六、加个请求头装得像个浏览器你直接用requests.get()发请求对方网站一看就知道你是爬虫——因为你的请求头里明明白白写着python-requests/2.xx。大部分网站无所谓但有些比较敏感的网站会直接给你返回 403。怎么解决加上User-Agent请求头伪装成浏览器importrequests headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36}responserequests.get(https://www.example.com,headersheaders)print(response.status_code)加上之后从请求头看你和一个正常的 Chrome 浏览器没区别。这个User-Agent去哪里找最简单的办法——打开你的浏览器百度搜我的User-Agent第一个结果就是你自己的直接复制粘贴用。七、GET 请求带参数有时候你需要在 URL 后面加参数比如搜索的时候https://www.example.com/search?qpythonpage1手动拼 URL 也行但更优雅的写法是用params参数importrequests params{q:python,page:1}responserequests.get(https://www.example.com/search,paramsparams)print(response.url)# https://www.example.com/search?qpythonpage1requests会自动帮你把参数拼好、编码好不用你自己操心特殊字符转义的问题。八、今天的重点回顾这一篇内容不多但都是基础中的基础。记住这几个关键点requests.get(url)发 GET 请求返回一个response对象response.status_code 200才是成功其他状态码都要处理response.text拿网页文本乱码就手动指定encoding加User-Agent请求头伪装成浏览器不容易被封参数用params传别自己拼 URL掌握了这些你已经能拿到任何公开静态网页的源码了。但拿到源码只是第一步——你拿到的是一大坨 HTML怎么从里面提取出你想要的具体数据呢下一篇我们讲BeautifulSoup怎么从网页里精准提取标题、内容、表格等信息。本文仅讲解核心思路与关键代码片段适合零基础学习原理。完整可运行工程源码、配套测试数据、详细逐行注释、常见报错排错文档已打包成资源。【资源说明】所有资源仅限个人学习使用禁止商用、二次倒卖、公开分发包含完整源码 测试数据 使用文档不含一对一远程调试、环境配置答疑服务适合直接复用、写作业、练项目、做个人作品集【合规声明】本项目仅用于公开静态网页、公开学习数据采集练习禁止用于商业爬取、高频爬取、隐私数据爬取使用者自行承担使用责任。©️ 梅雅达编程笔记原创 · 首发 CSDN · 转载请注明出处

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑