精华内容
下载资源
问答
  • 在爬虫中requests.get()与requests.post()的区别
    千次阅读
    2022-02-27 21:48:33

    **requests.get()**通常是用来向服务器发起获取页面请求的,获取的东西可以缓存到浏览器中,用来获取资源的。
    **requests.post()**用来向服务器传递数据的,服务器会根据这些数据做出相应的反映,通常是用来模拟用户登录的。

    更多相关内容
  • 在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。 data与json既可以是str类型,也可以是dict类型。 区别: 1、不管json是str还是dict,如果不指定headers中的content-type,...
  • 今天小编就为大家分享一篇python requests.post带head和body的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 用了些requests模块,主要是requests.request、requests.get和requests.post import json import requests url='http://localhost:8888/' response=requests.get(url) #打印响应内容 print('response.text:',...

    用了些requests模块,主要是requests.request、requests.get和requests.post

    import json
    import requests
    url='http://localhost:8888/'
    response=requests.get(url)
    
    
    
    
    #打印响应内容
    print('response.text:',response.text)
    print('response.content.decode():',response.content.decode())
    print('response.content:',response.content)
    print('response.json():',response.json())
    print('----------------------------------')
    #打印相应内容类类型
    print('response.text:',type(response.text))
    print('response.content.decode():',type(response.content.decode()))
    print('response.content:',type(response.content))
    print('response.json():',type(response.json()))
    print('----------------------------------')
    #判断相应内容是否相等
    print(response.text==response.content.decode())
    print(response.json()==response.content.decode())
    print(json.loads(response.content.decode())==response.json())
    
    
    
    

    运行结果:

    response.text: {"name": 1, "age": 18}
    response.content.decode(): {"name": 1, "age": 18}
    response.content: b'{"name": 1, "age": 18}'
    response.json(): {'name': 1, 'age': 18}
    ----------------------------------
    response.text: <class 'str'>
    response.content.decode(): <class 'str'>
    response.content: <class 'bytes'>
    response.json(): <class 'dict'>
    ----------------------------------
    True
    False
    True

    ------------------------------------------------------------------------------------------------------------------

    关于json方法:

    服务端返回内容有限制,不然response.json()方法会报错

    客户端代码:

    import tornado.ioloop
    import tornado.web
    
    class MainHandler(tornado.web.RequestHandler):
        # 定义tornado的get方法
        def get(self):
            # self.write('{"name":1,"age":18}')#可以用json
            # self.write({"name":1,"age":18})#可以用json
            self.write({'name':1,'age':18})#可以用json
            # self.write("{'name':1,'age':18}")#json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
            # self.write("{'name':1,'age':18}")#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
            # self.write("test")#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
            # self.write('test')#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
            # self.write([1,2,3])#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
            # self.write(123)#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
        #定义tornado的post方法
        def post(self, *args, **kwargs):
            self.write({'name':1,'age':18})#可以用json
    
    def make_app():
        return tornado.web.Application([
            (r"/", MainHandler),
        ])
    
    if __name__ == "__main__":
        app = make_app()
        app.listen(8888)
        tornado.ioloop.IOLoop.current().start()

    对比requests.request方法和requests.get、requests.post方法的区别,感觉requests.request就是两这个汇总,手动传方法就行了

    import json
    import requests
    url='http://localhost:8888/'
    response=requests.get(url)
    response2=requests.request('get',url)
    response3=requests.request('post',url)
    
    #判断response和response2
    print('response.text:',response.text==response2.text)
    print('response.content.decode():',response.content.decode()==response2.content.decode())
    print('response.content:',response.content==response2.content)
    print('response.json():',response.json()==response2.json())
    #判断response和response3
    print('response.text:',response.text==response3.text)
    print('response.content.decode():',response.content.decode()==response3.content.decode())
    print('response.content:',response.content==response3.content)
    print('response.json():',response.json()==response3.json())

    运行结果:

    response.text: True
    response.content.decode(): True
    response.content: True
    response.json(): True
    response.text: True
    response.content.decode(): True
    response.content: True
    response.json(): True

    这个结果是返回结果完全一样的,但是有api接口返回竟然是随机的。。。

    比如天气api的这个接口

    代码如下:

    import json
    import requests
    
    url='http://v.juhe.cn/weather/index'
    data={'cityname':'北京','key':'4ddab89a84997b92d16be8451a877a71'}
    response=requests.get(url,params=data)
    response1 = requests.request('GET', url, params=data)
    
    
    print(response.json() == response1.json())

    展开全文
  • 其次通过aiohttp.ClientSession()来代替requests async with aiohttp.ClientSession() as session: # requests async with session.get(url) as resp: # resp = requests.get() 执行完上述操作后即可获得所请求的...
    首先需要导入aiohttp模块
    
    import aiohttp
    
    其次通过aiohttp.ClientSession()来代替requests
    
    async with aiohttp.ClientSession() as session:  # requests
            async with session.get(url) as resp:  # resp = requests.get()
    
    执行完上述操作后即可获得所请求的url的内容
    
    使用异步操作时,需要注意的是与同步操作的细微差异
    
     - 1.异步的await resp.content.read()    <==>同步的resp.content()
     - 2.异步的需要await挂起, resp.text()   <==>同步的resp.text
    
    
    注意:在执行异步操作的列表执行时需要用到await asyncio.wait(列表名称)
    
    展开全文
  • requests.post()和session.post()的区别

    千次阅读 2020-12-12 19:01:38
    requests.post()的调用过程为: 1.调用requests.post方法 2.再调用requests.request 使用上下文方式创建了一个Session对象,并调用其session.request.post方法,而它的上下文实现如下: 由以上源码可以看出,...

    requests.post()的调用过程为:
    1.调用requests.post方法
    在这里插入图片描述
    2.再调用requests.request
    在这里插入图片描述
    使用上下文方式创建了一个Session对象,并调用其session.request.post方法,而它的上下文实现如下:
    在这里插入图片描述
    由以上源码可以看出,requests.post在调用完成后就关闭了connect,所以cookies随着connect消亡而消亡

    接下来让我们再看看Session.post()的调用过程

    import requests
    r = requests.session()
    r.post()
    

    1.首先调用request.sesson()创建一个session对象,调用post
    在这里插入图片描述
    从源码中可以看出session.post方法直接调用创建session实例后,直接调用实例方法post,未做上下文关闭连接处理,则会话一直保持在连接池内,其cookies也就一直有效

    总结:
    Requests.Post()在调用完成后,即关闭连接,不保存cookies
    Session.Post() 调用后,保持会话连接,保存cookies

    官方的描述为:
    在这里插入图片描述
    以上内容为原创内容,纯属个人理解,转载请注明出处。

    展开全文
  • requests.post() 方法的使用

    万次阅读 多人点赞 2019-07-08 11:49:37
    requests.post() 方法的使用: 文目录: 一、方法定义 二、post方法简单使用  1、带数据的post  2、带header的post  3、带json的post  4、带参数的post  5、普通文件上传  6、定制化文件上传  7、...
  • requests.post基本应用

    千次阅读 2019-06-06 16:49:32
    一、方法定义 二、post方法简单使用 ...1、到官方文档去了下requests.post()方法的定义,如下: 2、源码: 3、常用返回信息: 二、post方法简单使用: 1、带数据的post: 复制代码 -- coding:utf...
  • Python 接口测试requests.post方法中data与json参数区别

    千次阅读 多人点赞 2020-03-01 14:18:00
    引言  在随笔分类Jmeter入门基础中,分享过一篇《Jmeter处理http请求Content-Type类型和传参方式》,这篇...requests.post主要参数是data与json,这两者使用是有区别的,下面我详情的介绍一下使用方法。  Requests...
  • requests.post,这货默认是阻塞的,除非显式指定了timeout值,否则不会做超时处理。 1 response = requests.post(url, data = body, headers = http_headers, timeout=5 ) ...
  • 最近在使用request.post()方法进行参数请求时,由于post中的参数没有弄清楚,导致请求一直失败报错,发现是我参数类型问题,应该是使用json进行传参,而非data。 接口需求是请求格式为application/json。之前测试的...
  • 爬虫 requests.post

    千次阅读 2018-09-08 11:41:49
    爬虫 requests.post 可以模拟网页向服务器发送消息,获取想要的内容 1.无返回值 打开并登陆豆瓣 模拟豆瓣登陆 import requests postUrl = 'https://www.douban.com/accounts/login' id = '******' #...
  • python requests.post中包含中文字符处理

    千次阅读 2020-09-17 07:21:41
    s = requests.Session() payload = {"keyboard": ‘全国’, "kw": '', "show": "title", "tempid": '1', "tbname": 'download', "x": '15', "y": '16'} data
  • 通过查资料发现,python的requests模块使用的urllib3,而urllib3默认对post()方法不设置重访问,因此需要我们手动指定才可以,修改如下: import requests from requests.adapters import HTTPAdapter from requests...
  • rsp = requests.post(url,data=jsonData,headers=headers,timeout = 3).json() code = rsp['code'] if code != 1000 : print(rsp) else: print("管理员列表输出成功") 提取返回的第一个user_id: rsp = requests....
  • 二、显式指定超时和重试 配置 requests 在经过 timeout( s )之后停止等待响应,从而避免进程一直卡住: try: requests.adapters.DEFAULT_RETRIES = 2 response = requests.post(url, data = body, headers = ...
  • With': 'XMLHttpRequest', } # 提交审批 def postApply(post_data): res = requests.post( url=ADDR_ADD_URL, headers=headers, data=post_data, timeout=3, allow_redirects=True ) return res.status_code 分析...
  • Python3的requests.post()方法的源码: def post(url, data=None, json=None, **kwargs): r"""Sends a POST request. :param url: URL for the new :class:`Request` object. :param data: (optional) Dictio.....
  • requests.post(),默认是阻塞的,除非显式指定了 timeout 值,否则不会做超时处理。 参数值 参数 描述 url 必须。请求的网址 data 可选。字典,元组列表,字节或要发送到指定URL的文件...
  • 大家在使用requestspost 方法提交数据时, 经常使用的方法如下: 1. 提交python字典格式的数据 &gt;&gt;&gt; payload = {'key1': 'value1', 'key2': 'value2'} &gt;&gt;&gt; r = ...
  • 在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。 常见的form表单可以直接使用data参数进行报文提交,而data的对象则是python中的字典类型; 而在最新爬虫的过程中遇到了一...
  • #上传json的post请求 r = requests.post(url,data=json,dumps(data))低版本#r = requests.post(url,json=data)高版本import requestsimport jsonurl = "https://httpbin.org/post"data = {"info":{"code":1,"sex":...
  • Content-Type: application/json #############↓↓↓成功↓↓↓###########...import requestsurl = 'http://localhost/api/mgr/sq_mgr/'payload = { 'action': 'add_course', 'data':''' { "name":"初中物理",...
  • python requests.post带head和body

    万次阅读 2018-05-23 15:14:28
    import requests host = "http://47.XX.XX.XX:30000" endpoint=r"/api/v1/carxxx/addCarxxx" url = ''.join(host,endpoint) headers = \ { "X-Member-Id": "23832100000&...
  • python requests.post中data和json的区别

    千次阅读 2019-04-08 19:15:52
    使用python的requests库作一个登陆的post请求,代码如下: import requests import json def login(): ... pdata = {"userName": "lidaxia","password":"loginpsd"} ... res = requests.post(url,d...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 147,828
精华内容 59,131
关键字:

requests.post

友情链接: achievs.rar