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

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

一、模块导入

1、requests模块的下载:

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

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

2、文件内导入requests包:

python 复制代码
import requests

二、GET请求

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

案例:

python 复制代码
import requests

response=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请求:

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

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

三、POST请求

需要传递大量参数时使用

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

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

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

1、获取图片

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

案例:

python 复制代码
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字符串时:

python 复制代码
import requests

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

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

python 复制代码
{'origin': '本机ip'}

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

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

python 复制代码
print(data['origin'])

五、自定义请求头信息

python 复制代码
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、查看

python 复制代码
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、设置

python 复制代码
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。如果设置的值完全与目标一样就可以。

相关推荐
懒大王爱吃狼41 分钟前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
秃头佛爷2 小时前
Python学习大纲总结及注意事项
开发语言·python·学习
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
深度学习lover3 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
XiaoLeisj4 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
API快乐传递者4 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
励志成为嵌入式工程师5 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉5 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer5 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq5 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端