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

Python中requests模块(爬虫)基本使用

Python的requests模块是一个非常流行的HTTP库,用于发送HTTP/1.1请求。

一、模块导入

1、requests模块的下载:

使用包管理器下载,在cmd窗口,或者在项目的虚拟环境目录下:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

2、文件内导入requests包:

import requests

二、GET请求

在不需要传递参数,或则传递少量参数时使用

案例:

import requestsresponse=requests.get(url='https://www.xiaohongshu.com/explore')
print(response.text)

首先导入了requests包,使用get请求语法:requests.get()。括号中可以包括:url参数(访问的地址),params参数(传递的参数),headers(请求头)等,这些参数是有顺序的,如果不指定关键字需要按顺序填入参数,如果只填一个,那一定是url。response接受了requests响应的数据。

如果单独输出response:

输出response.text:那么就会输出你访问的页面的所有代码

需要传参的get请求:

import requests
data = {"key1":"value1","key2":"value2"}
response = requests.get("https://httpbin.org/get",params=data)
print(response.url)

上述代码传递了 一个data对象为参数,使用params的关键字参数。data是我们自己定义的。里面存入了我们要传递的数据。

三、POST请求

需要传递大量参数时使用

import requests
data ={"name":"测试"}
response = requests.post("https://httpbin.org/post",data=data)
print(response.text)

使用方法与get大致相同,只是传递参数的关键字不同,为:data。

四、获得具体数据和保存到本地

1、获取图片

比如我们要获得一个具体的网页上的图片,我们需要找到图片的根地址,然后访问图片的根地址就可以了

案例:

import requests
#获得图片
response=requests.get('https://img20.360buyimg.com/imgzone/jfs/t1/186375/10/42901/145312/66666146F5138cf6a/5fedc8c498a474c5.jpg')
with open('tupian.jpg','wb') as f:f.write(response.content)

上述代码中url就是图片的根地址。使用 with 语句打开文件,因为它可以自动管理文件的打开和关闭。open()语句中的第一个参数是要打开的文件地址,第二个参数为打开方式。f就是我们要打开的文件引用。f.write语句就将我们接受到的响应数据的response的content值写入到该文件中,因为图片是二进制数据,所以我们打开时的方式是写入二进制(wb),.content也代表获得的二进制数据。

2、获取JSON

当我们需要将拿到的数据转为json字符串时:

import requests#获得JSON
response=requests.get("https://httpbin.org/ip")
data=response.json()
print(data)

response.json()可以将拿到的数据转为json字符串形式。当我们输出时会得到:

{'origin': '本机ip'}

因为https://httpbin.org/ip会返回请求的来源 IP 地址。所以输出的就是您的本机ip

转为json串后我们可以对他进行按键取值,比如我们只要origin的值,那么我们可以输出:

print(data['origin'])

五、自定义请求头信息

import requests
header={"user-agent":"hoho/v1"
}
response = requests.get('http://httpbin.org/get',headers=header)
print(response.headers)#获得请求头信息
print(response.request.headers)#获得响应头信息

在我们请求时,可以设置headers关键字设置请求头信息。上述代码我们就将头信息中的user-agent设置为:hoho/v1。如果要查看我们设置的头信息,需要使用第二个输出语句

六、查看和设置cookie

cookie值是一些用户的登录信息

1、查看

import requests
#访问目标
url = 'https://www.baidu.com'
header={"User-Agent":"Mozilla/5.0"
}
response=requests.get(url=url,headers=header)
print(response.cookies)
print(response.cookies['BAIDUID'])

我们获取cookie需要头信息中的User-Agent与浏览器的一致,所以我们需要设置头信息。获取cookie值:response.cookies

2、设置

import requests
#设置cookies,发起请求时携带cookie数据访问服务端
url='http://httpbin.org/cookies'
cookie=dict(cookies_arg='hello python')
response=requests.get(url=url,cookies=cookie)
print(response.text)

上述代码中定义了一个叫cookie的字典,有一个键名为:cookies_arg,值为:hello python。在访问时,设置关键字cookies的值为我们定义好的字典对象:cookie。如果设置的值完全与目标一样就可以。

相关文章:

  • MySQL的驱动安装
  • OpenCV-图像拼接
  • Python爬虫爬取王者荣耀英雄信息并保存到图数据库
  • Spring源码学习:SpringMVC(2)DispatcherServlet初始化【子容器9大组件】
  • 【YOLO目标检测车牌数据集】共10000张、已标注txt格式、有训练好的yolov5的模型
  • python中logging的用法
  • 433按键单片机解码
  • Meta AI 发布 Llama 3.2
  • 赛氪作媒体支持单位受邀参加首届科普翻译与跨学科专业学术研讨会
  • OCR Fusion: EasyOCR/Tesseract/PaddleOCR/TrOCR/GOT
  • 不同的浏览器、服务器和规范对 URL 长度的限制
  • 前端面试经验总结2(经典问题篇)
  • LIMS和LIS的主要区别
  • InternVL 微调实践
  • 计算机网络自顶向下(1)---网络基础
  • 收藏网友的 源程序下载网
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 4个实用的微服务测试策略
  • MySQL QA
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • tab.js分享及浏览器兼容性问题汇总
  • vue2.0项目引入element-ui
  • 包装类对象
  • 技术:超级实用的电脑小技巧
  • 前端攻城师
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 首页查询功能的一次实现过程
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 移动端唤起键盘时取消position:fixed定位
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 用简单代码看卷积组块发展
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • ​【已解决】npm install​卡主不动的情况
  • #图像处理
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (1)bark-ml
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (黑马点评)二、短信登录功能实现
  • (六)vue-router+UI组件库
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十二)Flink Table API
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (原创)可支持最大高度的NestedScrollView
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ./configure、make、make install 命令
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Core中的时区转换问题
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NetCore实践篇:分布式监控Zipkin持久化之殇