今天学习爬虫的一个模块:requests(基础)
目录
一、工具与环境
二、GET请求
1、基础Ⅰ:requests的get用法
2、基础Ⅱ:反扒问题
3、基础Ⅲ
4、基础Ⅳ:获取请求头
6、基础Ⅵ:添加请求头
7、抓取二进制数据
三、POST请求
①环境:jupyter
②需要安装模块:requests
!pip install requests
在jupyter新建一个python3,输入如上代码,运行即可。
import requests #导入requests模块
r = requests.get('https://www.baidu.com/') #以百度为例将get请求到的内容传给r
print(r.text)#输出r的内容
import requests
u=requests.get('https://blog.csdn.net/m0_60960867')
print(u.status_code)#打印状态码
print(u.text)#打印文本
print(u.cookies)#打印cookie
这里爬一下我自己的博客,发现并不像上一个案例一样,这是因为被反扒了
http://httpbin.org/get
一个专门用来实现爬虫请求的网站
对其进行一次普通的get请求可以得到:
这里出现了 请求头、URL、IP 等信息。
当需要额外的条件请求即可运用参数params
由于网页的返回类型是 str 类型,并且是 JSON 格式的,如果想直接解析返回结果,得到一个字典格式的话,可以直接调用 json 方法。
import requests
r = requests.get("http://httpbin.org/get")
print(type(r.text)) #得到r的类型为str
print(r.json())
print(type(r.json()))#得到r.json()的类型为dict
鼠标点击右键,选择检查,再选择网络,刷新一下,随机选其中一个内容,如下:
import requests
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44'
}#请求头
url='https://avatar.csdnimg.cn/D/2/1/2_m0_60960867_1633660031.jpg'
r=requests.get(url=url,headers=headers)
print(r.cookies)#直接打印
有些时候我们需要添加headers 参数来传递头信息,不然就会请求失败。
以知乎为例
import requests
r = requests.get("https://www.zhihu.com/explore")
print(r.text)
出现403 请求失败。
但如果加上 headers 并加上 User-Agent 信息
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}#请求头
r = requests.get("https://www.zhihu.com/explore", headers=headers)
print(r.text)
就可以请求成功
图片、音频、视频这些文件本质上都是由二进制码组成的,由于有特定的保存格式和对应的解析方式,我们才可以看到这些形形色色的多媒体。所以,想要抓取它们,就要拿到它们的二进制码。
以爬取我自己的头像为例子:
import requests
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44'
}
url='https://profile.csdnimg.cn/D/2/1/1_m0_60960867'
r = requests.get(url=url,headers=headers)
with open('phpto.jpg', 'wb') as f:
f.write(r.content)
运行即可保存
post请求用法与get请求大同小异
就不再赘述。