当前位置: 首页 > article >正文

2026 requests零基础入门:从0到1搞定HTTP请求与数据采集

很多刚接触Python数据采集的朋友第一个遇到的问题就是怎么用代码访问一个网页浏览器能正常打开为什么代码返回403今天就带大家从零开始学习Python生态最流行的HTTP库——requests。它语法简洁、功能强大几乎能满足所有日常的HTTP请求需求是爬虫、API调用、自动化测试的必备工具。本文从最基础的安装开始一步步讲解核心用法和实战技巧看完就能写出自己的第一个数据采集程序。一、为什么选择requestsPython标准库自带了urllib但它的用法非常繁琐需要处理很多底层细节。而requests库在urllib的基础上做了高度封装把复杂的HTTP操作变成了简单的函数调用。对比一下urllib发送GET请求importurllib.request responseurllib.request.urlopen(https://www.baidu.com)htmlresponse.read().decode(utf-8)requests发送GET请求importrequests responserequests.get(https://www.baidu.com)htmlresponse.text可以看到requests的代码更简洁、更易读。除此之外它还原生支持HTTPS、Cookie、会话保持、文件上传下载等功能几乎不需要额外安装其他依赖。二、环境搭建与快速上手2.1 安装requestsrequests是第三方库需要用pip安装pipinstallrequests验证安装是否成功importrequestsprint(requests.__version__)# 输出当前版本如2.32.32.2 第一个请求我们用requests发送第一个GET请求访问百度首页importrequests# 发送GET请求responserequests.get(https://www.baidu.com)# 打印响应状态码print(f状态码{response.status_code})# 打印响应内容的前100个字符print(f响应内容{response.text[:100]})运行代码如果输出状态码200说明请求成功。这就是最简单的HTTP请求整个过程只需要一行代码。三、requests核心用法详解3.1 GET请求获取数据GET是最常用的HTTP方法用于从服务器获取数据。1带参数的GET请求很多URL后面会跟查询参数比如https://www.example.com/search?qpythonpage1。不用手动拼接字符串requests提供了params参数直接传字典即可importrequests params{q:python,page:1,size:10}responserequests.get(https://www.example.com/search,paramsparams)print(response.url)# 输出https://www.example.com/search?qpythonpage1size102添加请求头很多网站会检查请求头中的User-Agent如果发现是爬虫会直接返回403。我们需要模拟浏览器的请求头headers{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36}responserequests.get(https://www.example.com,headersheaders)3.2 响应对象处理返回结果requests的所有请求都会返回一个Response对象包含了服务器返回的所有信息。常用属性如下属性说明response.text字符串形式的响应内容自动识别编码response.content字节流形式的响应内容用于下载文件response.json()解析JSON格式的响应返回字典response.status_codeHTTP状态码200表示成功response.headers响应头返回字典response.cookies响应Cookie返回RequestsCookieJar对象response.url最终请求的URL处理重定向后注意如果response.text出现乱码可以手动指定编码response.encodingutf-8print(response.text)3.3 POST请求提交数据POST请求用于向服务器提交数据比如登录、提交表单等。1提交表单数据用data参数提交表单数据会自动编码为application/x-www-form-urlencoded格式data{username:admin,password:123456}responserequests.post(https://www.example.com/login,datadata)2提交JSON数据现在大多数API都接受JSON格式的数据用json参数即可会自动设置Content-Type: application/jsonjson_data{title:测试文章,content:这是一篇测试文章}responserequests.post(https://www.example.com/api/articles,jsonjson_data)3.4 完整请求流程图创建请求参数URL/headers/params/data调用requests.get/postrequests封装HTTP请求发送请求到服务器服务器处理请求并返回响应requests解析响应为Response对象处理响应内容text/content/json四、进阶用法满足复杂需求4.1 会话保持Session对象如果需要多次请求同一个网站并且保持登录状态可以使用Session对象。它会自动保存Cookie不用每次请求都手动传递importrequests# 创建会话对象sessionrequests.Session()# 登录请求Session会自动保存Cookielogin_data{username:admin,password:123456}session.post(https://www.example.com/login,datalogin_data)# 后续请求会自动带上登录Cookieresponsesession.get(https://www.example.com/user/profile)print(response.text)4.2 文件上传与下载1文件上传用files参数上传文件files{file:open(test.txt,rb)}responserequests.post(https://www.example.com/upload,filesfiles)2文件下载用response.content获取字节流然后写入文件# 下载图片responserequests.get(https://www.example.com/image.jpg)withopen(image.jpg,wb)asf:f.write(response.content)# 大文件分块下载避免内存溢出responserequests.get(https://www.example.com/large_file.zip,streamTrue)withopen(large_file.zip,wb)asf:forchunkinresponse.iter_content(chunk_size1024):ifchunk:f.write(chunk)4.3 异常处理网络请求随时可能出错必须添加异常处理避免程序崩溃importrequestsfromrequests.exceptionsimportConnectionError,Timeout,HTTPError,RequestExceptiontry:responserequests.get(https://www.example.com,timeout10)response.raise_for_status()# 状态码不是200时抛出HTTPErrorexceptConnectionError:print(网络连接错误)exceptTimeout:print(请求超时)exceptHTTPErrorase:print(fHTTP错误{e})exceptRequestExceptionase:print(f请求异常{e})else:print(请求成功)五、实战爬取静态新闻列表现在我们用requests写一个完整的爬虫爬取一个静态新闻网站的新闻列表importrequestsfrombs4importBeautifulSoupdefcrawl_news():urlhttps://news.example.comheaders{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36}try:responserequests.get(url,headersheaders,timeout10)response.raise_for_status()response.encodingutf-8# 用BeautifulSoup解析HTMLsoupBeautifulSoup(response.text,html.parser)news_listsoup.find_all(div,class_news-item)fornewsinnews_list:titlenews.find(h3).text.strip()linknews.find(a)[href]publish_timenews.find(span,class_time).text.strip()print(f标题{title})print(f链接{link})print(f发布时间{publish_time})print(-*50)exceptExceptionase:print(f爬取失败{e})if__name____main__:crawl_news()六、新手常见踩坑总结缺少User-Agent被反爬这是最常见的问题几乎所有网站都会检查User-Agent一定要添加模拟浏览器的请求头。编码乱码问题如果response.text出现乱码手动指定response.encoding utf-8或者response.encoding response.apparent_encoding。SSL验证错误访问自签名证书的网站时会出现SSL错误可以添加verifyFalse参数requests.get(url, verifyFalse)。请求超时一定要设置timeout参数否则程序可能会一直卡住。重定向问题requests默认会自动处理重定向如果不需要可以设置allow_redirectsFalse。七、订阅与专栏以上就是requests库的核心用法掌握这些内容就能应对绝大多数日常的HTTP请求和简单的数据采集场景。更多高级用法如代理设置、异步请求、会话池管理和完整的爬虫项目实战欢迎订阅我的专栏《最新爬虫实战项目》和《2026爬虫攻防实战指南》我会持续更新更多工业级数据采集的技巧和经验。合规声明本文仅用于技术交流学习请勿用于任何商业用途。请严格遵守《中华人民共和国网络安全法》《数据安全法》和《个人信息保护法》尊重平台的知识产权和用户隐私。所有数据采集行为都应当在平台官方允许的范围内进行任何非法使用造成的后果与作者无关。

相关文章:

2026 requests零基础入门:从0到1搞定HTTP请求与数据采集

很多刚接触Python数据采集的朋友,第一个遇到的问题就是:怎么用代码访问一个网页?浏览器能正常打开,为什么代码返回403?今天就带大家从零开始学习Python生态最流行的HTTP库——requests。它语法简洁、功能强大&#xff…...

Xournal++:你的开源数字笔记与PDF批注解决方案

Xournal:你的开源数字笔记与PDF批注解决方案 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Suppo…...

舍弗勒与珞石机器人签订战略合作协议

、美通社消息:4月7日,专注驱动技术的科技公司舍弗勒与中国智能机器人领军企业珞石机器人签订战略合作协议。双方将围绕人形机器人关节模组等核心零部件的技术研发、产品供应及场景落地展开全面合作,携手共筑具身智能产业新生态,加…...

IBM与Arm达成战略合作,共同开发新型“双架构硬件“ | 美通社头条

、美通社消息:IBM近日宣布与Arm公司达成战略合作,共同开发新型"双架构硬件",以帮助企业更灵活、更可靠和更安全地运行未来的人工智能(AI)及数据密集型工作负载。得益于在系统设计领域(从芯片、软件到安全)的领导者地位,…...

Phi-3 Forest Laboratory效果展示:轻量3.8B模型生成教科书级逻辑回答

Phi-3 Forest Laboratory效果展示:轻量3.8B模型生成教科书级逻辑回答 1. 核心能力概览 Phi-3 Forest Laboratory是基于微软Phi-3 Mini 128K Instruct模型构建的AI对话终端,将前沿轻量级大模型技术与自然审美设计完美融合。这个仅3.8B参数的模型展现出令…...

焊罩厚度偏差的5大根源

Q1:导致焊罩厚度偏差最核心的原因有哪些?A:按影响权重排序:1. 工艺参数失控 2. 材料质量不稳 3.PCB 设计缺陷 4. 设备精度不足 5. 环境 / 人为因素。Q2:工艺参数如何影响厚度?最常见失控点是什么&#xff1…...

如何永久保存微信聊天记录:3步实现个人数据自主管理

如何永久保存微信聊天记录:3步实现个人数据自主管理 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatM…...

零基础选AI认证的理性分析:如何通过“实战含量”和“案例质量”筛选证书

CAIE注册人工智能工程师(简称CAIE认证,又称赛一认证),是聚焦人工智能领域的技能等级认证,由CAIE人工智能研究院颁发,旨在培养和评估具备理论基础与实战能力的复合型AI人才,核心使命是“连接AI时…...

Next.js缓存组件实战:静态外壳与动态内容的完美融合

1. 为什么需要缓存组件? 想象一下你正在浏览一个电商网站。首页的商品列表几乎每次打开都差不多,但库存数字却时刻在变。传统做法要么整个页面静态化(库存不更新),要么全动态渲染(加载慢)。Next…...

2026主流企业级AI智能体开发平台推荐:行业垂直领域的多样化需求

随着数字经济的深度发展,AI已从企业可选的技术补充,转变为驱动业务优化、效率提升、模式创新的核心支撑。不同行业的企业在数智化转型过程中,对AI技术的需求呈现出差异化、专业化特征,出现一批聚焦各领域的企业AI服务商。以下是当前主流的企业智能体开发平台及其核心能力,覆盖从…...

Ollama环境变量调优实战:从基础配置到生产级安全加固

1. Ollama环境变量基础配置指南 第一次接触Ollama环境变量时,我完全被各种参数搞晕了。后来才发现,这些变量就像汽车的仪表盘,调对了能让你的模型跑得又快又稳。我们先从最基础的配置说起。 临时设置环境变量是最简单的入门方式。在Linux/mac…...

从Windows到Android:APK安装器如何成为跨平台应用管理的桥梁

从Windows到Android:APK安装器如何成为跨平台应用管理的桥梁 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字生态日益多元化的今天,Windo…...

limelight.vim 操作符映射:深入理解 <Plug> 映射机制

limelight.vim 操作符映射:深入理解 映射机制【免费下载链接】limelight.vim :flashlight: All the worlds indeed a stage and we are merely players 项目地址: https://gitcode.com/gh_mirrors/li/limelight.vim limelight.vim 是一款专为 Vim 用户设计的…...

避开这7个SEO误区:我用Ahrefs工具拯救网站排名的真实案例

避开这7个SEO误区:我用Ahrefs工具拯救网站排名的真实案例 三年前,我的个人博客突然从谷歌第一页消失,日均流量暴跌72%。当时我自认为掌握了SEO的"秘诀"——频繁交换友链、大量堆砌关键词、每日更新短平快内容。直到用Ahrefs跑完完整…...

3分钟搞定Windows UEFI启动画面:告别单调开机界面

3分钟搞定Windows UEFI启动画面:告别单调开机界面 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT 厌倦了每次开机都看到千篇一律的Windows徽标或厂商Logo?想要在电…...

Claude Skills到底解决了什么,没解决什么?从代码审查看AI技能模块化的真实代价

先说结论Skills通过文件级封装让AI在特定领域表现更稳定,但编写和维护成本不低,需要评估驱动开发避免文档膨胀代码审查这类任务适合用Skills标准化,但指令的自由度设定很关键,过细会僵化,过粗会失效Skills脚本需要自行…...

SZT-bigdata数据质量监控:确保分析结果的准确性

SZT-bigdata数据质量监控:确保分析结果的准确性 【免费下载链接】SZT-bigdata 深圳地铁大数据客流分析系统🚇🚄🌟 项目地址: https://gitcode.com/gh_mirrors/sz/SZT-bigdata SZT-bigdata作为深圳地铁大数据客流分析系统&a…...

【实战】Hermes Agent 深度体验:开源自进化 AI 智能体,三层记忆+自动 Skills+6 平台网关

摘要:Hermes Agent 是 Nous Research 于 2026 年 2 月发布的开源 AI Agent 框架,上线一个多月斩获 61K Stars。本文从安装部署、核心架构(三层记忆/自动 Skill 创建/模型无关/RL 轨迹导出)、多平台网关配置、实际使用体验、与同类…...

Chart.js项目贡献指南:如何为awesome列表添加新内容

Chart.js项目贡献指南:如何为awesome列表添加新内容 【免费下载链接】awesome A curated list of awesome Chart.js resources and libraries 项目地址: https://gitcode.com/GitHub_Trending/awesome/awesome Chart.js是一个功能强大的开源图表库&#xff0…...

2026年AI原生工程范式:大模型与智能体如何重塑软件开发全生命周期

在人工智能技术爆发的时代,AI工具、大模型及其在垂直行业的深度落地正以不可逆转的态势重塑全球软件开发的底层逻辑与工作模式。当我们站在2026年的历史节点回望,可以清晰地发现,软件工程的进化已经跨越了单纯依赖人类编写代码的传统阶段&…...

遥感数据处理避坑:为什么ENVI对国产ZY1E卫星的XML元数据‘水土不服’?

国产高光谱卫星元数据解析困境:从ZY1E与ENVI的兼容性问题看数据标准化挑战 当我们将国产ZY1E高光谱卫星拍摄的影像数据导入ENVI软件时,一个看似简单的XML元数据解析问题背后,实际上折射出的是卫星遥感领域更深层次的数据标准之争。这个问题绝…...

革命性AI工具gptcommit:让GPT-3为你自动编写完美的Git提交信息

革命性AI工具gptcommit:让GPT-3为你自动编写完美的Git提交信息 【免费下载链接】gptcommit A git prepare-commit-msg hook for authoring commit messages with GPT-3. 项目地址: https://gitcode.com/gh_mirrors/gp/gptcommit 在软件开发过程中&#xff0c…...

RV1106开发板实战:手把手教你编译FFmpeg 3.4.8并集成到LVGL 9.2.3播放视频

RV1106开发板实战:从零构建FFmpeg 3.4.8与LVGL 9.2.3视频播放系统 在嵌入式设备上实现流畅的视频播放一直是开发者面临的挑战之一。RV1106作为一款高性能的嵌入式处理器,结合FFmpeg强大的多媒体处理能力和LVGL轻量级图形库的优雅界面,能够打造…...

5大核心模块:重新定义英雄联盟游戏辅助体验

5大核心模块:重新定义英雄联盟游戏辅助体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于LCU API开发的英…...

CAN总线协议升级指南:从2.0A迁移到2.0B的5个关键注意事项

CAN总线协议升级指南:从2.0A迁移到2.0B的5个关键注意事项 在工业自动化和汽车电子领域,CAN总线作为经典的现场总线协议,其2.0A和2.0B版本至今仍被广泛使用。当企业面临设备互联需求升级、系统复杂度提升时,从CAN2.0A迁移到2.0B往往…...

Flutter安全最佳实践:保护用户数据与应用安全的完整指南

Flutter安全最佳实践:保护用户数据与应用安全的完整指南 【免费下载链接】flta-materials The projects and the materials that accompany the Flutter Apprentice book 项目地址: https://gitcode.com/gh_mirrors/fl/flta-materials 在移动应用开发中&…...

ABAQUS仿真计算硬件配置避坑指南:如何根据项目规模选择单机多核还是多机集群

ABAQUS仿真计算硬件配置避坑指南:如何根据项目规模选择单机多核还是多机集群 在工程仿真领域,硬件配置的选择往往决定了计算效率与项目成败。许多工程师都有过这样的经历:花费数周时间准备的复杂模型,最终因为硬件选择不当导致计算…...

STC8H8K64U定时器实战:从寄存器到库函数,手把手教你驱动数码管和按键

STC8H8K64U定时器实战:从寄存器到库函数,手把手教你驱动数码管和按键 在嵌入式开发中,定时器是最基础也最核心的外设之一。STC8H8K64U作为增强型51单片机,提供了多达5个16位定时器,为开发者带来了丰富的定时和计数功能…...

Sunshine游戏串流:从零到精通的终极自托管指南

Sunshine游戏串流:从零到精通的终极自托管指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 还在为远程游戏体验的延迟和画质妥协而烦恼吗?Sunshine作为一…...

城通网盘下载太慢?这个免费工具让你3秒获取直连地址!

城通网盘下载太慢?这个免费工具让你3秒获取直连地址! 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘那龟速下载而抓狂吗?每次下载都要等几个小时&…...