栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫requests深究(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫requests深究(一)

闲来无事,先看看爬虫库requests的结构(官方文档地址)。

直接看关于请求的requests包里的内容
大多数文件从名字就可以判断出来时什么作用,所以我们先从api.py先研究,因为这里面的函数是大家最常使用的。api.py如下(为了更直观,删掉了注释):

from . import sessions

def request(method, url, **kwargs):
	#通过使用'with'语句,我们确定会话是关闭的,因此我们避免了让套接字打开,
	#在某些情况下会触发ResourceWarning,而在其他情况下看起来像内存泄漏。
    with sessions.Session() as session:
    #生成了一个sessions包中session类的实例,并命名为session
        return session.request(method=method, url=url, **kwargs)


def get(url, params=None, **kwargs):
    return request('get', url, params=params, **kwargs)


def options(url, **kwargs):
    return request('options', url, **kwargs)


def head(url, **kwargs):
    kwargs.setdefault('allow_redirects', False)
    # 检查kwargs中是否有allow_redirects这个键,如果没有,则添加,另一项是键值
    return request('head', url, **kwargs)


def post(url, data=None, json=None, **kwargs):
    return request('post', url, data=data, json=json, **kwargs)


def put(url, data=None, **kwargs):
    return request('put', url, data=data, **kwargs)


def patch(url, data=None, **kwargs):
    return request('patch', url, data=data, **kwargs)


def delete(url, **kwargs):
    return request('delete', url, **kwargs)

我们可以看到我们常用的函数requests.request(),requests.get(),requests.options(),requests.put(),requests.head(),requests.post(),requests.patch(),requests.delete()。很明显Requests库所有的功能都可以通过以上方法访问,它们全部都会返回一个 Response 对象的实例。
当然也可以不看这些函数,如包名(api)一样,这些都是api函数,最终都指向requests.request()函数,而request()函数体里面是生成了一个sessions包中session类的实例,并命名为session,然后调用了session中的request函数。因此我们所有的请求其实都会生成一个会话,然后进一步请求。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/822641.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号