专栏首页方球Requests - python第三方请求包入门

Requests - python第三方请求包入门

简单例子

# 发送 get 请求
url = 'https://www.baidu.com'
res = requests.get(url)
print(res.text)

安装

pipe install requests

请求方法

get

get(url, params=None, **kwargs)

# 不带参数
get('https://huaban.com/search')
# 带参数
params = { 'q': '赛博朋克' } 
get(url, params)

post

post(url, data=None, json=None, **kwargs)

# 无参数
url= '...'
# data 可以为字典 or 元组

# data 为dict字典
dict_data = {'name': 'coco', 'age': 12}
post(url, data=dict_data)

# data 为元组列表
tulp_data = (('name', 'coco'), ('age', 12)) 
post(url, data=tulp_data)

# 接收json数据
post(url, data=json.dumps(dict_data))
# 直接使用json字段
post(url, json=dict_data)

# 文件上传
def_files = {'file': open('test.text', 'rb')}
post(url, files = def_files)
# 设置文件信息
name_files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
post(url, files = name_files)

options

options(url, **kwargs)

options('http://httpbin.org/get')

head(url, **kwargs)

head('http://httpbin.org/get')

put

put(url, data=None, **kwargs)

put('http://httpbin.org/put', data = {'key':'value'})

patch

patch(url, data=None, **kwargs)

put('http://httpbin.org/patch', data = {'key':'value'})

delete

delete(url, **kwargs)

delete('http://httpbin.org/delete')

request

基础请求函数, 其他请求方法都是该方法的包装函数 request (self, method, url, params=None, data=None, headers=None, cookies=None, files=None, auth=None, timeout=None, allow_redirects=True, proxies=None, hooks=None, stream=None, verify=None, cert=None, json=None)

# get 请求函数
res = request('get', 'https://www.baidu.com', params={'id': 'xxx'})

获取响应内容

res = get('https://www.baidu.com')
# 文本格式内容
text_content = res.text
# json内容
json_content = res.json
# 二进制内容
byte_content = res.content

# buff流
res = get('https://www.baidu.com', stream=True)
# 读取指定长度内容
r.raw.read(100)
# 读取全部内容
r.raw.read()

响应状态码

r = requests.get('http://httpbin.org/get')
# 获取状态码
print(r.status_code)

# 捕获请求错误, 例如: 404,500 等
r = post('https://www.baidu.com/api')
try:
  # 如果请求错误,将抛出异常
  r.raise_for_status()
except Exception as e:
  print('ERROR: ', e)
内置预设状态码
from requests import get, codes
r = requests.get('http://httpbin.org/get')
print(r.status_code === codes.ok)

codes 列表

codes = {

    # Informational.
    100: ('continue',),
    101: ('switching_protocols',),
    102: ('processing',),
    103: ('checkpoint',),
    122: ('uri_too_long', 'request_uri_too_long'),
    200: ('ok', 'okay', 'all_ok', 'all_okay', 'all_good', '\\o/', '✓'),
    201: ('created',),
    202: ('accepted',),
    203: ('non_authoritative_info', 'non_authoritative_information'),
    204: ('no_content',),
    205: ('reset_content', 'reset'),
    206: ('partial_content', 'partial'),
    207: ('multi_status', 'multiple_status', 'multi_stati', 'multiple_stati'),
    208: ('already_reported',),
    226: ('im_used',),

    # Redirection.
    300: ('multiple_choices',),
    301: ('moved_permanently', 'moved', '\\o-'),
    302: ('found',),
    303: ('see_other', 'other'),
    304: ('not_modified',),
    305: ('use_proxy',),
    306: ('switch_proxy',),
    307: ('temporary_redirect', 'temporary_moved', 'temporary'),
    308: ('permanent_redirect',
          'resume_incomplete', 'resume',),  # These 2 to be removed in 3.0

    # Client Error.
    400: ('bad_request', 'bad'),
    401: ('unauthorized',),
    402: ('payment_required', 'payment'),
    403: ('forbidden',),
    404: ('not_found', '-o-'),
    405: ('method_not_allowed', 'not_allowed'),
    406: ('not_acceptable',),
    407: ('proxy_authentication_required', 'proxy_auth', 'proxy_authentication'),
    408: ('request_timeout', 'timeout'),
    409: ('conflict',),
    410: ('gone',),
    411: ('length_required',),
    412: ('precondition_failed', 'precondition'),
    413: ('request_entity_too_large',),
    414: ('request_uri_too_large',),
    415: ('unsupported_media_type', 'unsupported_media', 'media_type'),
    416: ('requested_range_not_satisfiable', 'requested_range', 'range_not_satisfiable'),
    417: ('expectation_failed',),
    418: ('im_a_teapot', 'teapot', 'i_am_a_teapot'),
    421: ('misdirected_request',),
    422: ('unprocessable_entity', 'unprocessable'),
    423: ('locked',),
    424: ('failed_dependency', 'dependency'),
    425: ('unordered_collection', 'unordered'),
    426: ('upgrade_required', 'upgrade'),
    428: ('precondition_required', 'precondition'),
    429: ('too_many_requests', 'too_many'),
    431: ('header_fields_too_large', 'fields_too_large'),
    444: ('no_response', 'none'),
    449: ('retry_with', 'retry'),
    450: ('blocked_by_windows_parental_controls', 'parental_controls'),
    451: ('unavailable_for_legal_reasons', 'legal_reasons'),
    499: ('client_closed_request',),

    # Server Error.
    500: ('internal_server_error', 'server_error', '/o\\', '✗'),
    501: ('not_implemented',),
    502: ('bad_gateway',),
    503: ('service_unavailable', 'unavailable'),
    504: ('gateway_timeout',),
    505: ('http_version_not_supported', 'http_version'),
    506: ('variant_also_negotiates',),
    507: ('insufficient_storage',),
    509: ('bandwidth_limit_exceeded', 'bandwidth'),
    510: ('not_extended',),
    511: ('network_authentication_required', 'network_auth', 'network_authentication'),
}

响应头

响应头为字典类型, 不区分大小写

设置request响应头

url = '...'
headers = {'user-agent': 'my-app/0.0.1'}
r = get(url, headers=headers)
查看response响应头
url= 'https://www.baidu.com'  

r = get(url)

# 显示全部字段
print(r.headers)

# 查询指定字段
print(r.headers.get('Content-Type'))
url= 'https://www.baidu.com'  

cookies = dict(
  id='xxx',
  name='yyy'
)
r = get(url,cookies=cookies)
url= 'https://www.baidu.com'  
r = get(url,cookies=cookies)

print(r.cookies, type(r.cookies))
# <RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]> <class 'requests.cookies.RequestsCookieJar'>
print(dict(r.cookies))
# {'BDORZ': '27315'}
print(r.cookies.get('BDORZ'))
# 27315

history 历史记录

Requests 将自动处理重定向, history 收集了重定向的请求体

r = get(url,cookies=cookies)
print(r.history)
# []
# 无重定向时,列表为空

timeout 请求超时

# 设置请求超时时长
get('http://github.com', timeout=0.001)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python爬虫

    调度器:相当于一台电脑的CPU,主要负责调度URL管理器、下载器、解析器之间的协调工作。 URL管理器:包括待爬取的URL地址和已爬取的URL地址,防止重复抓...

    conanma
  • python 爬虫2

    一、认识爬虫 1.1、什么是爬虫? 爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。 1.2、Python爬虫架构 调度器:相当...

    conanma
  • Python爬虫的起点

    第一章主要讲解爬虫相关的知识如:http、网页、爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点。

    sergiojune
  • Python爬虫系列(一)入门教学

    大家好,我是新来的小编小周。今天给大家带来的是python爬虫入门,文章以简为要,引导初学者快速上手爬虫。话不多说,我们开始今天的内容。

    短短的路走走停停
  • Python爬虫怎么入门-让入门更快速,更专注

    经常有同学私信问,Python爬虫该怎么入门,不知道从何学起,网上的文章写了一大堆要掌握的知识,让人更加迷惑。

    一墨编程学习
  • Requests 库 | 不可胜数的 Python 第三方库

    标准库的内容已经非常多了,我在前面的文章中已经介绍了七八个,没看的可以回头找着去看看。虽然介绍了不少,但是 Python 给编程者的支持不仅仅在于标准库,它还有...

    编程文青李狗蛋
  • Python网络数据采集之登录窗口采集处理|第08天

    你好我是森林
  • Python网络数据采集之登录采集处理|第08天

    如果我们采集的网站需要我们登录后才能获取我们想要的数据,这就需要进一步处理登录这个问题。

    你好我是森林
  • Python爬虫基础系列:初识Requests库

    "if something is important enough, even if the odds are against you, you should ...

    小Bob来啦
  • Python进阶教程笔记(六)网络编程

    要进行网络通信,需要建立起通信双方的连接,连接的双方分别称为客户端和服务端,在Python中,使用套接字socket来建立起网络连接。 套接字包含在socket...

    Lemon黄
  • Python接口自动化-requests模块之get请求

    Requests是Python语言的第三方的库,专门用于发送HTTP请求。在Python语言中,虽然提供了urllib2和urllib的库,但是相比较而言,Re...

    ITester软件测试小栈
  • Python第三方库安装和卸载

    系统:Windows 7 版本:Python 3.5 Python是一门简洁、优雅的语言,丰富的第三方库能让我们很多的编程任务变得更加简单。对于想要用Pyth...

    CDA数据分析师
  • 『爬虫四步走』手把手教你使用Python抓取并存储网页数据!

    爬虫是Python的一个重要的应用,使用Python爬虫我们可以轻松的从互联网中抓取我们想要的数据,本文将基于爬取B站视频热搜榜单数据并存储为例,详细介绍Pyt...

    刘早起
  • 1小时入门 Python 爬虫

    随着网络技术的发展,数据变得越来越值钱,如何有效提取这些有效且公开的数据并利用这些信息变成了一个巨大的挑战。从而爬虫工程师、数据分析师、大数据工程师的岗位也越来...

    CSDN技术头条
  • 手把手教你使用Python爬取西刺代理数据(上篇)

    细心的小伙伴应该知道上次小编发布了一篇关于IP代理的文章,基于Python网络爬虫技术,主要介绍了去IP代理网站上抓取可用IP,并且Python脚本实现验证IP...

    Python进阶者
  • Python网络爬虫入门篇

    学习者需要预先掌握Python的数字类型、字符串类型、分支、循环、函数、列表类型、字典类型、文件和第三方库使用等概念和编程方法。

    用户1679793
  • 小白学爬虫系列-基础-两种爬虫实现方式

    网络爬虫的第一步就是根据 URL,获取网页的 HTM L信息。在 Python3 中,可以使用 urllib.request 和requests 进行网页数据获...

    小一不二三
  • Python爬虫一键爬取海量表情包,分分钟碾压斗图狂魔!【附源码】

    有时候我不是很理解聊天斗图的现象,年轻人也就罢了,但我这种四十多岁的圈子里,居然还盛行聊天斗图这种风气…一把年纪了还当斗图狂魔…

    iOSSir
  • 【爬虫教程】吐血整理,最详细的爬虫入门教程~

    通俗来讲,假如你需要互联网上的信息,如商品价格,图片视频资源等,但你又不想或者不能自己一个一个自己去打开网页收集,这时候你便写了一个程序,让程序按照你指定好的规...

    Awesome_Tang

扫码关注云+社区

领取腾讯云代金券