【转载】爬虫篇——requests的基础知识(总结)

本文介绍了Python requests库的基础知识,包括GET和POST请求的使用,参数传递,响应内容处理,请求头设置,Cookie操作,文件上传,SSL证书验证,超时设置,身份认证和代理设置等。此外,还探讨了重定向的处理方式。
摘要由CSDN通过智能技术生成

注意:本文章的大部分代码案例出自于《Python3 网络爬虫开发实战(第2版)》。

一、GET请求

import requests

res = requests.get('https://www.python.org')
print(type(res))  # <class 'requests.models.Response'>
print(res.status_code)  # 200
print(type(res.text))  # <class 'str'>
print(res.text[:150])
print(res.encoding) # utf-8
print(res.headers['content-type']) # application/json; charset=utf8
print(res.cookies)  # <RequestsCookieJar[]>
  • 扩展:其它请求类型
r = requests.get('http://www.httpbin.org/get')
r = requests.post('http://www.httpbin.org/post')
r = requests.put('http://httpbin.org/put', data = {
   'key':'value'})
r = requests.delete('http://www.httpbin.org/delete')
r = requests.patch('http://www.httpbin.org/patch')

1、实例

import requests

r = requests.get('https://www.httpbin.org/get')
print(r.text)

2、params传递参数

import requests

data = {
   
    'name':'germey',
    'age':25
}
r = requests.get('https://www.httpbin.org/get',params=data)
print(r.text)

3、JSON 响应内容

import requests

r = requests.get('https://www.httpbin.org/get')
print(type(r.text)) # <class 'str'>
print(r.json())
print(type(r.json())) # <class 'dict'>

返回结果不是JSON格式,会出现解析错误:

import requests

res = requests.get('https://www.baidu.com')
"""
注意,返回结果不是json格式,就会出现解析异常,抛出 json.decoder.JSONDecodeError 异常
"""
print(res.json()) # 报错

4、原始响应内容

import requests

r = requests.get('https://api.github.com/events', stream=True)
print(r.raw.read())

扩展:以下面的模式将文本流保存到文件(下载图片):

r = requests.get('https://docs.python-requests.org/zh_CN/latest/_static/requests-sidebar.png')
with open('requests-sidebar.png',mode='wb') as f:
    for chunk in r.iter_content(chunk_size=20):
        f.write(chunk)

5、二进制响应内容

import requests

r = requests.get('https://www.sogou.com')
print(r.text) # 抓取文本数据
print(r.content) # 抓取二进制数据

扩展:以二进制的形式,下载图片:

import requests

r = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
with open('baidu_logo.png',mode='wb') as f:
    f.write(r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值