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

[Web自动化] 爬虫之网络请求

9.4 爬虫之网络请求

9.4.1 使用requests库发送HTTP请求

requests库提供了丰富的功能来发送HTTP请求,并处理响应。以下是一些额外的示例和说明。
发送带参数的GET请求
如果你需要向服务器发送查询参数,可以将它们作为字典传递给params参数。

importrequests params={'key1':'value1','key2':'value2'}response=requests.get('http://httpbin.org/get',params=params)print(response.url)# 输出将包含查询参数:http://httpbin.org/get?key1=value1&key2=value2

发送POST请求
POST请求通常用于向服务器提交数据。你可以将数据作为字典传递给data参数(对于表单数据)或作为字节串传递给json参数(对于JSON数据)。

importrequests# 发送表单数据data={'key':'value'}response=requests.post('http://httpbin.org/post',data=data)# 发送JSON数据json_data={'key':'value'}response=requests.post('http://httpbin.org/post',json=json_data)

设置请求头
你可以通过headers参数自定义请求头,这对于模拟不同的浏览器或绕过某些服务器的检查非常有用。

importrequests url='http://example.com'headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language':'en-US,en;q=0.5','DNT':'1',# Do Not Track header'Connection':'keep-alive'}response=requests.get(url,headers=headers)

处理响应
一旦你发送了请求,requests库将返回一个Response对象。你可以使用这个对象来访问响应的内容、状态码、头部等信息。

response=requests.get(url)# 访问响应内容print(response.text)# 文本内容print(response.content)# 原始内容(字节串)# 访问状态码print(response.status_code)# 访问响应头print(response.headers)# 检查请求是否成功ifresponse.status_code==200:print("请求成功!")else:print("请求失败,状态码:",response.status_code)

会话(Session)对象
如果你需要向同一个服务器发送多个请求,并且希望保持某些参数(如Cookies)在请求之间持久化,可以使用requests.Session()对象。

importrequests Session=requests.Session()# 发送第一个请求,设置Cookiesresponse=Session.get('http://httpbin.org/Cookies/set/SessionCookie/123456789')# 发送第二个请求,自动携带之前的Cookiesresponse=Session.get('http://httpbin.org/Cookies')print(response.text)# 输出将包含'SessionCookie: 123456789'
http://www.jsqmd.com/news/304520/

相关文章:

  • 国产CAD这笔软件授权费,省得有点心疼
  • 导师严选10个AI论文平台,助研究生轻松搞定论文写作!
  • 国产CAD仿真分析,把破坏性试验留在屏幕里
  • 一口气看懂!多模态大模型是个啥?能帮我们干啥?
  • 给服务器起个“网名叫啥“?聊聊云服务器域名那些事儿
  • 一只蒟蒻的florr前期攻略(随本人更新,具有较强的真实性)
  • 广东视频号广告代理:厚拓科技11年深耕,赋能华南企业短视频营销新增长
  • 2026年 焊管机/焊管机组/高频焊管设备厂家实力推荐榜:方管机与镀锌方管机组等核心设备专业解析与选购指南
  • 结束数据的“马拉松”,开启决策的“实时模式”
  • Java计算机毕设之基于springboot的电器小家电机器人健康预警系统(完整前后端代码+说明文档+LW,调试定制等)
  • 意欧斯携手 SAP Business One 赋能生产制造企业数字化转型
  • 【课程设计/毕业设计】基于SpringBoot与Vue的机器人健康预警系统设计与实现基于springboot的机器人健康预警系统【附源码、数据库、万字文档】
  • langGraph从入门到精通(十一)——基于langgraph构建复杂工具应用的ReAct自治代理
  • 新手优化跨网络 DNS 解析速度全攻略
  • 08. 如何实现元器件按页分配位号?| OrCAD X Capture CIS 设计小诀窍第二季
  • 05. 如何实现原理图比较?| OrCAD X Capture CIS 设计小诀窍第二季
  • 06. 如何为 Off-Page Connector 添加去向页码?| OrCAD X Capture CIS 设计小诀窍第二季
  • 从人脸检测到五官重塑:直播美颜SDK中人脸美型的核心技术解析
  • 07. 如何批量放置 No Connect 符号?| OrCAD X Capture CIS 设计小诀窍第二季
  • 直播美颜SDK对比分析:不同人脸美型方案的技术差异
  • 直播美颜SDK怎么选?从人脸美型效果、性能与成本全面分析
  • Android ViewModel + 协程 = 优雅的生命周期管理
  • 2026年 气压旋铆机/全自动旋铆机厂家实力推荐榜:高精度、高效率自动化铆接解决方案深度解析
  • CRLF与LF的行分隔符警告⚠️
  • FastAPI系列(12):响应模型参数
  • 【双指针】判断是否为回文字符串
  • one_channel_hub 移植到CH584M MCU平台(移除WiFi/网络相关代码)
  • 9999999999
  • 关于Django项目的浏览器跨域问题
  • 9999999999999