Python-requests模块详解!

Python中requests库 文章目录requests库一、 基本概念1、 简介2、 获取3、 http 协议3.1 URL3.2 常用 http 请求方法二、 使用方法1、 基本语法requests 库中的方法2、 具体使用方法2.1 get2.1.1 基本语法2.1.2 常用参数2.2 post2.2.1 基本语法2.2.2 常用参数2.3 response2.4 **head**2.4.1 基本语法2.5 put requests库 一、 基本概念 1、 简介 requests 模块是 python 基于 urllib,采用 A 阅读详情
AI摘要

本文围绕Python的requests模块展开,介绍其是基于Apache2 licensed许可证的HTTP库,比urllib2更简洁,支持多种功能。涵盖基础入门,如导入模块、发送请求等,还给出GET、POST请求等示例代码,包括请求参数、异常处理、文件上传等,以及抓取网页源码保存和自动登录示例。

1、模块说明

requests是使用Apache2 licensed 许可证的HTTP库。

用python编写。

比urllib2模块更简洁。

Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。

在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。

现代,国际化,友好。

requests会自动实现持久连接keep-alive

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】!
在这里插入图片描述

2、基础入门

1)导入模块

import requests

2)发送请求的简洁

示例代码:获取一个网页(个人github)

import requests

r \= requests.get('https://github.com/Ranxf')       # 最基本的不带参数的get请求
r1 = requests.get(url='http://dict.baidu.com/s', params={'wd': 'python'})      # 带参数的get请求

我们就可以使用该方式使用以下各种方法

1   requests.get(‘https://github.com/timeline.json’)                                # GET请求
2   requests.post(“http://httpbin.org/post”)                                        # POST请求
3   requests.put(“http://httpbin.org/put”)                                          # PUT请求
4   requests.delete(“http://httpbin.org/delete”)                                    # DELETE请求
5   requests.head(“http://httpbin.org/get”)                                         # HEAD请求
6   requests.options(“http://httpbin.org/get” )                                     # OPTIONS请求

3)为url传递参数

\>>> url\_params = {'key':'value'}       #    字典传递参数,如果值为None的键不会被添加到url中
>>> r = requests.get('your url',params = url\_params)
\>>> print(r.url)
  your url?key\=value

4)响应的内容

r.encoding                       #获取当前的编码
r.encoding = 'utf-8'             #设置编码
r.text                           #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content                        #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。
r.headers                        #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.status\_code                     #响应状态码
r.raw                             #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()   
r.ok                              # 查看r.ok的布尔值便可以知道是否登陆成功
 #\*特殊方法\*#
r.json()                         #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise\_for\_status()             #失败请求(非200响应)抛出异常

post发送json请求:

1 import requests
2 import json
3  
4 r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some': 'data'}))
5 print(r.json())

5)定制头和cookie信息

header = {'user-agent': 'my-app/0.0.1''}
cookie = {'key':'value'}
 r \= requests.get/post('your url',headers=header,cookies=cookie) 
data = {'some': 'data'}
headers \= {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86\_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
 
r \= requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)
print(r.text)

6)响应状态码

使用requests方法后,会返回一个response对象,其存储了服务器响应的内容,如上实例中已经提到的 r.text、r.status_code……
获取文本方式的响应体实例:当你访问 r.text 之时,会使用其响应的文本编码进行解码,并且你可以修改其编码让 r.text 使用自定义的编码进行解码。

1 r = requests.get('http://www.itwhy.org')
2 print(r.text, '\\n{}\\n'.format('\*'\*79), r.encoding)
3 r.encoding = 'GBK'
4 print(r.text, '\\n{}\\n'.format('\*'\*79), r.encoding)

示例代码:

1 import requests
2 
3 r = requests.get('https://github.com/Ranxf')       # 最基本的不带参数的get请求
4 print(r.status\_code)                               # 获取返回状态
5 r1 = requests.get(url='http://dict.baidu.com/s', params={'wd': 'python'})      # 带参数的get请求
6 print(r1.url)
7 print(r1.text)        # 打印解码后的返回数据

运行结果:

/usr/bin/python3.5 /home/rxf/python3\_1000/1000/python3\_server/python3\_requests/demo1.py
200
http://dict.baidu.com/s?wd=python
…………

Process finished with exit code 0
 r.status\_code                      #如果不是200,可以使用 r.raise\_for\_status() 抛出异常

7)响应

r.headers                                  #返回字典类型,头信息
r.requests.headers                         #返回发送到服务器的头信息
r.cookies                                  #返回cookie
r.history                                  #返回重定向信息,当然可以在请求是加上allow\_redirects = false 阻止重定向

8)超时

r = requests.get('url',timeout=1)           #设置秒数超时,仅对于连接有效

9)会话对象,能够跨请求保持某些参数

s = requests.Session()
s.auth \= ('auth','passwd')
s.headers \= {'key':'value'}
r \= s.get('url')
r1 \= s.get('url1') 

10)代理

proxies = {'http':'ip1','https':'ip2' }
requests.get('url',proxies=proxies)

汇总:

# HTTP请求类型
# get类型
r = requests.get('https://github.com/timeline.json')
# post类型
r = requests.post("http://m.ctrip.com/post")
# put类型
r = requests.put("http://m.ctrip.com/put")
# delete类型
r = requests.delete("http://m.ctrip.com/delete")
# head类型
r = requests.head("http://m.ctrip.com/head")
# options类型
r = requests.options("http://m.ctrip.com/get")

# 获取响应内容
print(r.content) #以字节的方式去显示,中文显示为字符
print(r.text) #以文本的方式去显示

#URL传递参数
payload = {'keyword': '香港', 'salecityid': '2'}
r \= requests.get("http://m.ctrip.com/webapp/tourvisa/visa\_list", params=payload) 
print(r.url) #示例为http://m.ctrip.com/webapp/tourvisa/visa\_list?salecityid=2&keyword=香港

#获取/修改网页编码
r = requests.get('https://github.com/timeline.json')
print (r.encoding)

#json处理
r = requests.get('https://github.com/timeline.json')
print(r.json()) # 需要先import json    

# 定制请求头
url = 'http://m.ctrip.com'
headers \= {'User-Agent' : 'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'}
r \= requests.post(url, headers=headers)
print (r.request.headers)

#复杂post请求
url = 'http://m.ctrip.com'
payload \= {'some': 'data'}
r \= requests.post(url, data=json.dumps(payload)) #如果传递的payload是string而不是dict,需要先调用dumps方法格式化一下

# post多部分编码文件
url = 'http://m.ctrip.com'
files \= {'file': open('report.xls', 'rb')}
r \= requests.post(url, files=files)

# 响应状态码
r = requests.get('http://m.ctrip.com')
print(r.status\_code)
    
# 响应头
r = requests.get('http://m.ctrip.com')
print (r.headers)
print (r.headers\['Content-Type'\])
print (r.headers.get('content-type')) #访问响应头部分内容的两种方式
    
# Cookies
url = 'http://example.com/some/cookie/setting/url'
r \= requests.get(url)
r.cookies\['example\_cookie\_name'\]    #读取cookies
    
url \= 'http://m.ctrip.com/cookies'
cookies \= dict(cookies\_are='working')
r \= requests.get(url, cookies=cookies) #发送cookies

#设置超时时间
r = requests.get('http://m.ctrip.com', timeout=0.001)

#设置访问代理
proxies = {
           "http": "http://10.10.1.10:3128",
           "https": "http://10.10.1.100:4444",
          }
r \= requests.get('http://m.ctrip.com', proxies=proxies)

#如果代理需要用户名和密码,则需要这样:
proxies = {
    "http": "http://user:pass@10.10.1.10:3128/",
}
# HTTP请求类型
# get类型
r = requests.get('https://github.com/timeline.json')
# post类型
r = requests.post("http://m.ctrip.com/post")
# put类型
r = requests.put("http://m.ctrip.com/put")
# delete类型
r = requests.delete("http://m.ctrip.com/delete")
# head类型
r = requests.head("http://m.ctrip.com/head")
# options类型
r = requests.options("http://m.ctrip.com/get")

# 获取响应内容
print(r.content) #以字节的方式去显示,中文显示为字符
print(r.text) #以文本的方式去显示

#URL传递参数
payload = {'keyword': '香港', 'salecityid': '2'}
r \= requests.get("http://m.ctrip.com/webapp/tourvisa/visa\_list", params=payload) 
print(r.url) #示例为http://m.ctrip.com/webapp/tourvisa/visa\_list?salecityid=2&keyword=香港

#获取/修改网页编码
r = requests.get('https://github.com/timeline.json')
print (r.encoding)

#json处理
r = requests.get('https://github.com/timeline.json')
print(r.json()) # 需要先import json    

# 定制请求头
url = 'http://m.ctrip.com'
headers \= {'User-Agent' : 'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'}
r \= requests.post(url, headers=headers)
print (r.request.headers)

#复杂post请求
url = 'http://m.ctrip.com'
payload \= {'some': 'data'}
r \= requests.post(url, data=json.dumps(payload)) #如果传递的payload是string而不是dict,需要先调用dumps方法格式化一下

# post多部分编码文件
url = 'http://m.ctrip.com'
files \= {'file': open('report.xls', 'rb')}
r \= requests.post(url, files=files)

# 响应状态码
r = requests.get('http://m.ctrip.com')
print(r.status\_code)
    
# 响应头
r = requests.get('http://m.ctrip.com')
print (r.headers)
print (r.headers\['Content-Type'\])
print (r.headers.get('content-type')) #访问响应头部分内容的两种方式
    
# Cookies
url = 'http://example.com/some/cookie/setting/url'
r \= requests.get(url)
r.cookies\['example\_cookie\_name'\]    #读取cookies
    
url \= 'http://m.ctrip.com/cookies'
cookies \= dict(cookies\_are='working')
r \= requests.get(url, cookies=cookies) #发送cookies

#设置超时时间
r = requests.get('http://m.ctrip.com', timeout=0.001)

#设置访问代理
proxies = {
           "http": "http://10.10.1.10:3128",
           "https": "http://10.10.1.100:4444",
          }
r \= requests.get('http://m.ctrip.com', proxies=proxies)

#如果代理需要用户名和密码,则需要这样:
proxies = {
    "http": "http://user:pass@10.10.1.10:3128/",
}

3、示例代码

GET请求

1 # 1、无参数实例
 2   
 3 import requests
 4   
 5 ret = requests.get('https://github.com/timeline.json')
 6   
 7 print(ret.url)
 8 print(ret.text)
 9   
10   
11   
12 # 2、有参数实例
13   
14 import requests
15   
16 payload = {'key1': 'value1', 'key2': 'value2'}
17 ret = requests.get("http://httpbin.org/get", params=payload)
18   
19 print(ret.url)
20 print(ret.text)

POST请求

# 1、基本POST实例
  
import requests
  
payload \= {'key1': 'value1', 'key2': 'value2'}
ret \= requests.post("http://httpbin.org/post", data=payload)
  
print(ret.text)
  
  
# 2、发送请求头和数据实例
  
import requests
import json
  
url \= 'https://api.github.com/some/endpoint'
payload \= {'some': 'data'}
headers \= {'content-type': 'application/json'}
  
ret \= requests.post(url, data=json.dumps(payload), headers=headers)
  
print(ret.text)
print(ret.cookies)

请求参数

def request(method, url, \*\*kwargs):
    """Constructs and sends a :class:\`Request <Request>\`.

    :param method: method for the new :class:\`Request\` object.
    :param url: URL for the new :class:\`Request\` object.
    :param params: (optional) Dictionary or bytes to be sent in the query string for the :class:\`Request\`.
    :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:\`Request\`.
    :param json: (optional) json data to send in the body of the :class:\`Request\`.
    :param headers: (optional) Dictionary of HTTP Headers to send with the :class:\`Request\`.
    :param cookies: (optional) Dict or CookieJar object to send with the :class:\`Request\`.
    :param files: (optional) Dictionary of \`\`'name': file-like-objects\`\` (or \`\`{'name': file-tuple}\`\`) for multipart encoding upload.
        \`\`file-tuple\`\` can be a 2-tuple \`\`('filename', fileobj)\`\`, 3-tuple \`\`('filename', fileobj, 'content\_type')\`\`
        or a 4-tuple \`\`('filename', fileobj, 'content\_type', custom\_headers)\`\`, where \`\`'content-type'\`\` is a string
        defining the content type of the given file and \`\`custom\_headers\`\` a dict-like object containing additional headers
        to add for the file.
    :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth.
    :param timeout: (optional) How long to wait for the server to send data
        before giving up, as a float, or a :ref:\`(connect timeout, read
        timeout) <timeouts>\` tuple.
    :type timeout: float or tuple
    :param allow\_redirects: (optional) Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.
    :type allow\_redirects: bool
    :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy.
    :param verify: (optional) whether the SSL cert will be verified. A CA\_BUNDLE path can also be provided. Defaults to \`\`True\`\`.
    :param stream: (optional) if \`\`False\`\`, the response content will be immediately downloaded.
    :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.
    :return: :class:\`Response <Response>\` object
    :rtype: requests.Response

    Usage::

      >>> import requests
      >>> req = requests.request('GET', 'http://httpbin.org/get')
      <Response \[200\]>
    """

参数列表

请求参数

请求参数

def param\_method\_url():
    # requests.request(method='get', url='http://127.0.0.1:8000/test/')
    # requests.request(method='post', url='http://127.0.0.1:8000/test/')
    pass

def param\_param():
    # - 可以是字典
    # - 可以是字符串
    # - 可以是字节(ascii编码以内)

    # requests.request(method='get',
    # url='http://127.0.0.1:8000/test/',
    # params={'k1': 'v1', 'k2': '水电费'})

    # requests.request(method='get',
    # url='http://127.0.0.1:8000/test/',
    # params="k1=v1&k2=水电费&k3=v3&k3=vv3")

    # requests.request(method='get',
    # url='http://127.0.0.1:8000/test/',
    # params=bytes("k1=v1&k2=k2&k3=v3&k3=vv3", encoding='utf8'))

    # 错误
    # requests.request(method='get',
    # url='http://127.0.0.1:8000/test/',
    # params=bytes("k1=v1&k2=水电费&k3=v3&k3=vv3", encoding='utf8'))
    pass

def param\_data():
    # 可以是字典
    # 可以是字符串
    # 可以是字节
    # 可以是文件对象

    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # data={'k1': 'v1', 'k2': '水电费'})

    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # data="k1=v1; k2=v2; k3=v3; k3=v4"
    # )

    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # data="k1=v1;k2=v2;k3=v3;k3=v4",
    # headers={'Content-Type': 'application/x-www-form-urlencoded'}
    # )

    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # data=open('data\_file.py', mode='r', encoding='utf-8'), # 文件内容是:k1=v1;k2=v2;k3=v3;k3=v4
    # headers={'Content-Type': 'application/x-www-form-urlencoded'}
    # )
    pass

def param\_json():
    # 将json中对应的数据进行序列化成一个字符串,json.dumps(...)
    # 然后发送到服务器端的body中,并且Content-Type是 {'Content-Type': 'application/json'}
    requests.request(method='POST',
                     url\='http://127.0.0.1:8000/test/',
                     json\={'k1': 'v1', 'k2': '水电费'})

def param\_headers():
    # 发送请求头到服务器端
    requests.request(method='POST',
                     url\='http://127.0.0.1:8000/test/',
                     json\={'k1': 'v1', 'k2': '水电费'},
                     headers\={'Content-Type': 'application/x-www-form-urlencoded'}
                     )

def param\_cookies():
    # 发送Cookie到服务器端
    requests.request(method='POST',
                     url\='http://127.0.0.1:8000/test/',
                     data\={'k1': 'v1', 'k2': 'v2'},
                     cookies\={'cook1': 'value1'},
                     )
    # 也可以使用CookieJar(字典形式就是在此基础上封装)
    from http.cookiejar import CookieJar
    from http.cookiejar import Cookie

    obj \= CookieJar()
    obj.set\_cookie(Cookie(version\=0, name='c1', value='v1', port=None, domain='', path='/', secure=False, expires=None,
                          discard\=True, comment=None, comment\_url=None, rest={'HttpOnly': None}, rfc2109=False,
                          port\_specified\=False, domain\_specified=False, domain\_initial\_dot=False, path\_specified=False)
                   )
    requests.request(method\='POST',
                     url\='http://127.0.0.1:8000/test/',
                     data\={'k1': 'v1', 'k2': 'v2'},
                     cookies\=obj)

def param\_files():
    # 发送文件
    # file\_dict = {
    # 'f1': open('readme', 'rb')
    # }
    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # files=file\_dict)

    # 发送文件,定制文件名
    # file\_dict = {
    # 'f1': ('test.txt', open('readme', 'rb'))
    # }
    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # files=file\_dict)

    # 发送文件,定制文件名
    # file\_dict = {
    # 'f1': ('test.txt', "hahsfaksfa9kasdjflaksdjf")
    # }
    # requests.request(method='POST',
    # url='http://127.0.0.1:8000/test/',
    # files=file\_dict)

    # 发送文件,定制文件名
    # file\_dict = {
    #     'f1': ('test.txt', "hahsfaksfa9kasdjflaksdjf", 'application/text', {'k1': '0'})
    # }
    # requests.request(method='POST',
    #                  url='http://127.0.0.1:8000/test/',
    #                  files=file\_dict)

    pass

def param\_auth():
    from requests.auth import HTTPBasicAuth, HTTPDigestAuth

    ret \= requests.get('https://api.github.com/user', auth=HTTPBasicAuth('wupeiqi', 'sdfasdfasdf'))
    print(ret.text)

    # ret = requests.get('http://192.168.1.1',
    # auth=HTTPBasicAuth('admin', 'admin'))
    # ret.encoding = 'gbk'
    # print(ret.text)

    # ret = requests.get('http://httpbin.org/digest-auth/auth/user/pass', auth=HTTPDigestAuth('user', 'pass'))
    # print(ret)
    #

def param\_timeout():
    # ret = requests.get('http://google.com/', timeout=1)
    # print(ret)

    # ret = requests.get('http://google.com/', timeout=(5, 1))
    # print(ret)
    pass

def param\_allow\_redirects():
    ret \= requests.get('http://127.0.0.1:8000/test/', allow\_redirects=False)
    print(ret.text)

def param\_proxies():
    # proxies = {
    # "http": "61.172.249.96:80",
    # "https": "http://61.185.219.126:3128",
    # }

    # proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}

    # ret = requests.get("http://www.proxy360.cn/Proxy", proxies=proxies)
    # print(ret.headers)

    # from requests.auth import HTTPProxyAuth
    #
    # proxyDict = {
    # 'http': '77.75.105.165',
    # 'https': '77.75.105.165'
    # }
    # auth = HTTPProxyAuth('username', 'mypassword')
    #
    # r = requests.get("http://www.google.com", proxies=proxyDict, auth=auth)
    # print(r.text)

    pass

def param\_stream():
    ret \= requests.get('http://127.0.0.1:8000/test/', stream=True)
    print(ret.content)
    ret.close()

    # from contextlib import closing
    # with closing(requests.get('http://httpbin.org/get', stream=True)) as r:
    # # 在此处理响应。
    # for i in r.iter\_content():
    # print(i)

def requests\_session():
    import requests

    session \= requests.Session()

    #\## 1、首先登陆任何页面,获取cookie
    i1 \= session.get(url="http://dig.chouti.com/help/service")

    #\## 2、用户登陆,携带上一次的cookie,后台对cookie中的 gpsd 进行授权
    i2 = session.post(
        url\="http://dig.chouti.com/login",
        data\={
            'phone': "8615131255089",
            'password': "xxxxxx",
            'oneMonth': ""
        }
    )

    i3 \= session.post(
        url\="http://dig.chouti.com/link/vote?linksId=8589623",
    )
    print(i3.text)

参数示例代码

json请求:

#! /usr/bin/python3
import requests
import json

class url\_request():
    def \_\_init\_\_(self):
        ''' init '''

if \_\_name\_\_ == '\_\_main\_\_':
    heard \= {'Content-Type': 'application/json'}
    payload \= {'CountryName': '中国',
               'ProvinceName': '四川省',
               'L1CityName': 'chengdu',
               'L2CityName': 'yibing',
               'TownName': '',
               'Longitude': '107.33393',
               'Latitude': '33.157131',
               'Language': 'CN'}
    r \= requests.post("http://www.xxxxxx.com/CityLocation/json/LBSLocateCity", heards=heard, data=payload)
    data \= r.json()
    if r.status\_code!=200:
        print('LBSLocateCity API Error' + str(r.status\_code))
    print(data\['CityEntities'\]\[0\]\['CityID'\])  # 打印返回json中的某个key的value
    print(data\['ResponseStatus'\]\['Ack'\])
    print(json.dump(data, indent=4, sort\_keys=True, ensure\_ascii=False))  # 树形打印json,ensure\_ascii必须设为False否则中文会显示为unicode
Xml请求:
#! /usr/bin/python3
import requests

class url\_request():
    def \_\_init\_\_(self):
        """init"""

if \_\_name\_\_ == '\_\_main\_\_':
    heards \= {'Content-type': 'text/xml'}
    XML \= '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><Request xmlns="http://tempuri.org/"><jme><JobClassFullName>WeChatJSTicket.JobWS.Job.JobRefreshTicket,WeChatJSTicket.JobWS</JobClassFullName><Action>RUN</Action><Param>1</Param><HostIP>127.0.0.1</HostIP><JobInfo>1</JobInfo><NeedParallel>false</NeedParallel></jme></Request></soap:Body></soap:Envelope>'
    url \= 'http://jobws.push.mobile.xxxxxxxx.com/RefreshWeiXInTokenJob/RefreshService.asmx'
    r \= requests.post(url=url, heards=heards, data=XML)
    data \= r.text
    print(data)
状态异常处理
import requests

URL \= 'http://ip.taobao.com/service/getIpInfo.php'  # 淘宝IP地址库API
try:
    r \= requests.get(URL, params={'ip': '8.8.8.8'}, timeout=1)
    r.raise\_for\_status()  # 如果响应状态码不是 200,就主动抛出异常
except requests.RequestException as e:
    print(e)
else:
    result \= r.json()
    print(type(result), result, sep='\\n')
上传文件

使用request模块,也可以上传文件,文件的类型会自动进行处理:

import requests
 
url \= 'http://127.0.0.1:8080/upload'
files \= {'file': open('/home/rxf/test.jpg', 'rb')}
#files = {'file': ('report.jpg', open('/home/lyb/sjzl.mpg', 'rb'))}     #显式的设置文件名
 
r \= requests.post(url, files=files)
print(r.text)

request更加方便的是,可以把字符串当作文件进行上传:

import requests
 
url \= 'http://127.0.0.1:8080/upload'
files \= {'file': ('test.txt', b'Hello Requests.')}     #必需显式的设置文件名
 
r \= requests.post(url, files=files)
print(r.text)
6) 身份验证

基本身份认证(HTTP Basic Auth)

import requests
from requests.auth import HTTPBasicAuth
 
r \= requests.get('https://httpbin.org/hidden-basic-auth/user/passwd', auth=HTTPBasicAuth('user', 'passwd'))
# r = requests.get('https://httpbin.org/hidden-basic-auth/user/passwd', auth=('user', 'passwd'))    # 简写
print(r.json())

另一种非常流行的HTTP身份认证形式是摘要式身份认证,Requests对它的支持也是开箱即可用的:

requests.get(URL, auth=HTTPDigestAuth('user', 'pass')
Cookies与会话对象

如果某个响应中包含一些Cookie,你可以快速访问它们:

import requests
 
r \= requests.get('http://www.google.com.hk/')
print(r.cookies\['NID'\])
print(tuple(r.cookies))

要想发送你的cookies到服务器,可以使用 cookies 参数:

import requests
 
url \= 'http://httpbin.org/cookies'
cookies \= {'testCookies\_1': 'Hello\_Python3', 'testCookies\_2': 'Hello\_Requests'}
# 在Cookie Version 0中规定空格、方括号、圆括号、等于号、逗号、双引号、斜杠、问号、@,冒号,分号等特殊符号都不能作为Cookie的内容。
r = requests.get(url, cookies=cookies)
print(r.json())

会话对象让你能够跨请求保持某些参数,最方便的是在同一个Session实例发出的所有请求之间保持cookies,且这些都是自动处理的,甚是方便。
下面就来一个真正的实例,如下是快盘签到脚本:

import requests
 
headers \= {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,\*/\*;q=0.8',
           'Accept-Encoding': 'gzip, deflate, compress',
           'Accept-Language': 'en-us;q=0.5,en;q=0.3',
           'Cache-Control': 'max-age=0',
           'Connection': 'keep-alive',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86\_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
 
s \= requests.Session()
s.headers.update(headers)
# s.auth = ('superuser', '123')
s.get('https://www.kuaipan.cn/account\_login.htm')
 
\_URL \= 'http://www.kuaipan.cn/index.php'
s.post(\_URL, params\={'ac':'account', 'op':'login'},
       data\={'username':'\*\*\*\*@foxmail.com', 'userpwd':'\*\*\*\*\*\*\*\*', 'isajax':'yes'})
r \= s.get(\_URL, params={'ac':'zone', 'op':'taskdetail'})
print(r.json())
s.get(\_URL, params\={'ac':'common', 'op':'usersign'})

requests模块抓取网页源码并保存到文件示例

这是一个基本的文件保存操作,但这里有几个值得注意的问题:

1.安装requests包,命令行输入pip install requests即可自动安装。很多人推荐使用requests,自带的urllib.request也可以抓取网页源码

2.open方法encoding参数设为utf-8,否则保存的文件会出现乱码。

3.如果直接在cmd中输出抓取的内容,会提示各种编码错误,所以保存到文件查看。

4.with open方法是更好的写法,可以自动操作完毕后释放资源

#! /urs/bin/python3
import requests

'''requests模块抓取网页源码并保存到文件示例'''
html \= requests.get("http://www.baidu.com")
with open('test.txt', 'w', encoding='utf-8') as f:
    f.write(html.text)
    
'''读取一个txt文件,每次读取一行,并保存到另一个txt文件中的示例'''
ff \= open('testt.txt', 'w', encoding='utf-8')
with open('test.txt', encoding="utf-8") as f:
    for line in f:
        ff.write(line)
        ff.close()

因为在命令行中打印每次读取一行的数据,中文会出现编码错误,所以每次读取一行并保存到另一个文件,这样来测试读取是否正常。(注意open的时候制定encoding编码方式)

自动登陆"示例:

#!/usr/bin/env python
# -\*- coding:utf-8 -\*-
import requests

# ############## 方式一 ##############
"""
# ## 1、首先登陆任何页面,获取cookie
i1 = requests.get(url="http://dig.chouti.com/help/service")
i1\_cookies = i1.cookies.get\_dict()

# ## 2、用户登陆,携带上一次的cookie,后台对cookie中的 gpsd 进行授权
i2 = requests.post(
    url="http://dig.chouti.com/login",
    data={
        'phone': "8615131255089",
        'password': "xxooxxoo",
        'oneMonth': ""
    },
    cookies=i1\_cookies
)

# ## 3、点赞(只需要携带已经被授权的gpsd即可)
gpsd = i1\_cookies\['gpsd'\]
i3 = requests.post(
    url="http://dig.chouti.com/link/vote?linksId=8589523",
    cookies={'gpsd': gpsd}
)

print(i3.text)
"""

# ############## 方式二 ##############
"""
import requests

session = requests.Session()
i1 = session.get(url="http://dig.chouti.com/help/service")
i2 = session.post(
    url="http://dig.chouti.com/login",
    data={
        'phone': "8615131255089",
        'password': "xxooxxoo",
        'oneMonth': ""
    }
)
i3 = session.post(
    url="http://dig.chouti.com/link/vote?linksId=8589523"
)
print(i3.text)

"""

抽屉新热榜

#!/usr/bin/env python
# -\*- coding:utf-8 -\*-

import requests
from bs4 import BeautifulSoup

# ############## 方式一 ##############
#
# # 1. 访问登陆页面,获取 authenticity\_token
# i1 = requests.get('https://github.com/login')
# soup1 = BeautifulSoup(i1.text, features='lxml')
# tag = soup1.find(name='input', attrs={'name': 'authenticity\_token'})
# authenticity\_token = tag.get('value')
# c1 = i1.cookies.get\_dict()
# i1.close()
#
# # 1. 携带authenticity\_token和用户名密码等信息,发送用户验证
# form\_data = {
# "authenticity\_token": authenticity\_token,
#     "utf8": "",
#     "commit": "Sign in",
#     "login": "wupeiqi@live.com",
#     'password': 'xxoo'
# }
#
# i2 = requests.post('https://github.com/session', data=form\_data, cookies=c1)
# c2 = i2.cookies.get\_dict()
# c1.update(c2)
# i3 = requests.get('https://github.com/settings/repositories', cookies=c1)
#
# soup3 = BeautifulSoup(i3.text, features='lxml')
# list\_group = soup3.find(name='div', class\_='listgroup')
#
# from bs4.element import Tag
#
# for child in list\_group.children:
#     if isinstance(child, Tag):
#         project\_tag = child.find(name='a', class\_='mr-1')
#         size\_tag = child.find(name='small')
#         temp = "项目:%s(%s); 项目路径:%s" % (project\_tag.get('href'), size\_tag.string, project\_tag.string, )
#         print(temp)

# ############## 方式二 ##############
# session = requests.Session()
# # 1. 访问登陆页面,获取 authenticity\_token
# i1 = session.get('https://github.com/login')
# soup1 = BeautifulSoup(i1.text, features='lxml')
# tag = soup1.find(name='input', attrs={'name': 'authenticity\_token'})
# authenticity\_token = tag.get('value')
# c1 = i1.cookies.get\_dict()
# i1.close()
#
# # 1. 携带authenticity\_token和用户名密码等信息,发送用户验证
# form\_data = {
#     "authenticity\_token": authenticity\_token,
#     "utf8": "",
#     "commit": "Sign in",
#     "login": "wupeiqi@live.com",
#     'password': 'xxoo'
# }
#
# i2 = session.post('https://github.com/session', data=form\_data)
# c2 = i2.cookies.get\_dict()
# c1.update(c2)
# i3 = session.get('https://github.com/settings/repositories')
#
# soup3 = BeautifulSoup(i3.text, features='lxml')
# list\_group = soup3.find(name='div', class\_='listgroup')
#
# from bs4.element import Tag
#
# for child in list\_group.children:
#     if isinstance(child, Tag):
#         project\_tag = child.find(name='a', class\_='mr-1')
#         size\_tag = child.find(name='small')
#         temp = "项目:%s(%s); 项目路径:%s" % (project\_tag.get('href'), size\_tag.string, project\_tag.string, )
#         print(temp)

github

#!/usr/bin/env python
# -\*- coding:utf-8 -\*-
import time

import requests
from bs4 import BeautifulSoup

session \= requests.Session()

i1 \= session.get(
    url\='https://www.zhihu.com/#signin',
    headers\={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_10\_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
    }
)

soup1 \= BeautifulSoup(i1.text, 'lxml')
xsrf\_tag \= soup1.find(name='input', attrs={'name': '\_xsrf'})
xsrf \= xsrf\_tag.get('value')

current\_time \= time.time()
i2 \= session.get(
    url\='https://www.zhihu.com/captcha.gif',
    params\={'r': current\_time, 'type': 'login'},
    headers\={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_10\_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
    })

with open('zhihu.gif', 'wb') as f:
    f.write(i2.content)

captcha \= input('请打开zhihu.gif文件,查看并输入验证码:')
form\_data \= {
    "\_xsrf": xsrf,
    'password': 'xxooxxoo',
    "captcha": 'captcha',
    'email': '424662508@qq.com'
}
i3 \= session.post(
    url\='https://www.zhihu.com/login/email',
    data\=form\_data,
    headers\={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_10\_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
    }
)

i4 \= session.get(
    url\='https://www.zhihu.com/settings/profile',
    headers\={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_10\_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36',
    }
)

soup4 \= BeautifulSoup(i4.text, 'lxml')
tag \= soup4.find(id='rename-section')
nick\_name \= tag.find('span',class\_='name').string
print(nick\_name)

知乎

#!/usr/bin/env python
# -\*- coding:utf-8 -\*-
import re
import json
import base64

import rsa
import requests

def js\_encrypt(text):
    b64der \= 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp0wHYbg/NOPO3nzMD3dndwS0MccuMeXCHgVlGOoYyFwLdS24Im2e7YyhB0wrUsyYf0/nhzCzBK8ZC9eCWqd0aHbdgOQT6CuFQBMjbyGYvlVYU2ZP7kG9Ft6YV6oc9ambuO7nPZh+bvXH0zDKfi02prknrScAKC0XhadTHT3Al0QIDAQAB'
    der \= base64.standard\_b64decode(b64der)

    pk \= rsa.PublicKey.load\_pkcs1\_openssl\_der(der)
    v1 \= rsa.encrypt(bytes(text, 'utf8'), pk)
    value \= base64.encodebytes(v1).replace(b'\\n', b'')
    value \= value.decode('utf8')

    return value


session \= requests.Session()

i1 \= session.get('https://passport.cnblogs.com/user/signin')
rep \= re.compile("'VerificationToken': '(.\*)'")
v \= re.search(rep, i1.text)
verification\_token \= v.group(1)

form\_data \= {
    'input1': js\_encrypt('wptawy'),
    'input2': js\_encrypt('asdfasdf'),
    'remember': False
}

i2 \= session.post(url='https://passport.cnblogs.com/user/signin',
                  data\=json.dumps(form\_data),
                  headers\={
                      'Content-Type': 'application/json; charset=UTF-8',
                      'X-Requested-With': 'XMLHttpRequest',
                      'VerificationToken': verification\_token}
                  )

i3 \= session.get(url='https://i.cnblogs.com/EditDiary.aspx')

print(i3.text)

博客园

#!/usr/bin/env python
# -\*- coding:utf-8 -\*-

import requests

# 第一步:访问登陆页,拿到X\_Anti\_Forge\_Token,X\_Anti\_Forge\_Code
# 1、请求url:https://passport.lagou.com/login/login.html
# 2、请求方法:GET
# 3、请求头:
#    User-agent
r1 = requests.get('https://passport.lagou.com/login/login.html',
                 headers\={
                     'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
                 },
                 )

X\_Anti\_Forge\_Token \= re.findall("X\_Anti\_Forge\_Token = '(.\*?)'", r1.text, re.S)\[0\]
X\_Anti\_Forge\_Code \= re.findall("X\_Anti\_Forge\_Code = '(.\*?)'", r1.text, re.S)\[0\]
print(X\_Anti\_Forge\_Token, X\_Anti\_Forge\_Code)
# print(r1.cookies.get\_dict())
# 第二步:登陆
# 1、请求url:https://passport.lagou.com/login/login.json
# 2、请求方法:POST
# 3、请求头:
#    cookie
#    User-agent
#    Referer:https://passport.lagou.com/login/login.html
#    X-Anit-Forge-Code:53165984
#    X-Anit-Forge-Token:3b6a2f62-80f0-428b-8efb-ef72fc100d78
#    X-Requested-With:XMLHttpRequest
# 4、请求体:
# isValidate:true
# username:15131252215
# password:ab18d270d7126ea65915c50288c22c0d
# request\_form\_verifyCode:''
# submit:''
r2 = requests.post(
    'https://passport.lagou.com/login/login.json',
    headers\={
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
        'Referer': 'https://passport.lagou.com/login/login.html',
        'X-Anit-Forge-Code': X\_Anti\_Forge\_Code,
        'X-Anit-Forge-Token': X\_Anti\_Forge\_Token,
        'X-Requested-With': 'XMLHttpRequest'
    },
    data\={
        "isValidate": True,
        'username': '15131255089',
        'password': 'ab18d270d7126ea65915c50288c22c0d',
        'request\_form\_verifyCode': '',
        'submit': ''
    },
    cookies\=r1.cookies.get\_dict()
)
print(r2.text)
python——requests requestsrequests库简化了HTTP请求的发送和处理。支持多种HTTP方法及高级功能,如会话、SSL验证、超时等。在数据采集和爬虫中非常实用,尤其适合初学者快速上手。 阅读详情

相关推荐

Python——requests模块全解

requests模块全解

m0_59485658的博客 2632

爬虫之Requests: 让 HTTP 服务人类

Requests: 让 HTTP 服务人类 虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用:) Requests 继承了urllib2的...

weixin_30399821的博客 5669

python 手动给requests模块添加urlretrieve下载文件方法!

requests模块的前代是urllib模块,传入参数headers、cookie、data什么的肯定是requests好使,但是却没有urllib.request.urlretrieve这个方法,urlretrieve(url, filename=None,reporthook=None, params=None,)传入url跟文件路径即可下载文件,requests次次都得自己手动编写,我觉得太...

行者刘6 7020

全网最全!Python爬虫requests库教程(附案例)

Requests 是一个为人类设计的简单而优雅的 HTTP 库。requests 库是一个原生的 HTTP 库,比 urllib3 库更为容易使用。requests 库发送原生的 HTTP 1.1 请求,无需手动为 URL 添加查询串, 也不需要对 POST 数据进行表单编码。相对于 urllib3 库, requests 库拥有完全自动化 Keep-alive 和 HTTP 连接池的功能。requests 库包含的特性如下。

程序员小麦的博客 3万+

Python之Requests模块使用详解

Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能,那为什么Requests模块就能够脱引而出呢?可以打开它的官网看一下,是一个“人类“用的http模块。那么,它究竟怎样的人性化呢?相信如果你之前用过urllib之类的模块的话,对比下就会发现它确实很人性化。 一、导入 下载完成后,导入模块很简单,代码如下: 1 importrequests 二、请求.

量慧实工作室LHStudio的博客 2667

SAP后台JOB保姆级教程:从SM36创建到SM37监控,手把手教你搞定ABAP程序定时任务

本文详细解析SAP后台JOB从创建到监控的全流程,重点介绍SM36创建和SM37监控的操作步骤与最佳实践。通过真实案例演示如何配置定时任务、处理常见故障及实施企业级管理策略,帮助ABAP开发者高效管理后台程序执行。

weixin_30838873的博客 431

Python—requests模块详解!

(注意open的时候制定encoding编码方式)Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。获取文本方式的响应体实例:当你访问 r.text 之时,会使用其响应的文本编码进行解码,并且你可以修改其编码让 r.text 使用自定义的编码进行解码。会话对象让你能够跨请求保持某些参数,最方便的是在同一个Session实例发出的所有请求之间保持cookies,且这些都是自动处理的,甚是方便。

2301_78217634的博客 1810

Claude Desktop Cowork国内实操指南:本地文件自动化办公

大语言模型正从‘问答式AI’迈向‘执行型协作者’,其核心能力在于直接操作本地文件、调用系统工具并嵌入真实工作流。Claude Desktop的Cowork模式正是这一范式的代表,它通过轻量沙箱VM实现对Excel、PPT、PDF、音视频等办公资产的读写与处理,无需手动编码即可完成数据清洗、会议纪要生成、自动化报告输出等任务。技术价值体现在权限可控、环境隔离、结果可交付;典型场景覆盖行政文秘的文档流转、销售运营的数据分析、开发者的脚本调试与环境验证。本文聚焦国内用户高频卡点——网络链路、系统权限与工作流断层,

weixin_30617737的博客 468

Python进阶记录之requests模块 !

回顾 在《Python进阶记录之HTMLParser模块》中,我们介绍了Python内置的HTML解析库HTMLParser的基本用法,并配合urllib模块和re模块实现了获取指定新闻内容的功能。今天我们讲一下Python第三方网络请求库——requests模块。 requests模块简介与安装 requests是基于Python内置的urllib模块编写而成的,采用的是Apa...

Pythoncxy的博客 337

STM32F407 BootLoader实战:从零搭建到OTA升级(附完整源码)

本文详细介绍了为STM32F407微控制器从零搭建BootLoader并实现稳定OTA升级的完整实战指南。内容涵盖Flash分区规划、链接脚本配置、核心跳转逻辑、中断向量表重定向、可靠的升级流程设计,并深入探讨了双备份与回滚机制以提升工业级可靠性。文章提供了可直接使用的代码框架,并分享了关键调试技巧,帮助开发者快速掌握STM32远程固件更新技术。

weixin_29192211的博客 441

智能优化电池:基于单片机的电池管理系统

设计简介: 本设计是基于单片机的电池管理系统,主要实现以下功能: 可通过LCD1602显示温度、电压电流值; 可通过按键调整温度、电压和电流的阈值; 用ADC0832将模拟量转换为数字量。 标签:51单片机、LCD1602、ADC0832 效果图: 总体资料: 原理图: 软件设计流程: 系统框图: 本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成电动汽车的电池管理的整个系统,...

专注单片机实战教学,分享单片机学习资料 375

Python 使用 Requests 模块进行身份验证!

Requests 可以说是 Python 最好用的 http 模块,没有之一。 它对于身份验证有非常方便的使用规则。 Python资源共享群:484031800 基本身份验证 >>> from requests.auth import HTTPBasicAuth >>> requests.get('https://api.github.com/user...

Pythoncxy的博客 2806

机器学习——Anaconda下载安装教程

Anaconda详细下载安装教程

2401_83693485的博客 3066

python requests soup_带你了解python爬虫requests模块&BeautifulSoup使用方式!

requests模块介绍相对于python自带的urllib模块,requests模块提供了相对更高层的api来进行网页访问的工作。对于requests模块,使用很简单,一般我们会用到两个函数:requests.get(url,params=None,**kwargs) 这里的params是我们要传入的query,它的格式是dict。requests.post(url,data=None,**kw...

weixin_39911475的博客 438

最大似然估计、梯度下降、EM算法、坐标上升

主要讲解的是机器学习中参数学习算法之间的区别,以及应用的场景。 最大似然估计: 其中目标函数是对数似然函数。为了求目标函数取最大值时的theta。有两个关机键步骤,第一个是对目标函数进行求导,第二个是另导数等于0,求解后直接得到最优theta。两个步骤缺一不可。 梯度下降: 对目标函数进行求导,利用导函数提供的梯度信息,使参数往梯度下降最快的方向移动一小步,来更新参数。为什

tzl2093的博客 5141

南京理工大学计算机预推免面试(双非重点关注)

南京理工大学总体来说对双非学校比较友好,上岸率比较高,而且面试形式是线上,在预推免的过程中,可以作为重点关注的学校,但是一定要注意南理报名截止的时间,部分学校可能保研名额公示的比较晚,对于保研边缘人来说很可能会错过,我的建议是,即使不确定能否拿到保研名额,先查一下截止时间,先在系统上报名!!一旦拿到了offer,就是铁的,保底专硕,而且有很大的技巧性,一定要认真看哈!!!每个人的情况可能都不一样,如果有需要帮忙可以私我~~~

D1379951481的博客 2018

没想到,python,requests模块是这样用的!这么久了都不知道呀!

前言: 在web后台开发过程中,会遇到需要向第三方发送http请求的场景,python中的requests库可以很好的满足这一要求,这里简要记录一下requests模块的使用! 推荐一下我建的python学习交流qun:850973621,群里有免费的视频教程,开发工具、 电子书籍、项目源码分享。一起交流学习,一起进步! 说明: 这里主要记录一下requests模块的如下几点: 1.requests模块的安装 2.requests模块发送get请求 3.requests模块发送post请求 4.req

Ugyfyv的博客 109

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 1万+

python requests模块_教你用11 种方法高效下载 Python 资源!

点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!天天向上|译者数据管道|来源https://dzone.com/articles/simple-examples-of-downloading-files-using-python在本教程中,你将学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、Amazon S3和其...

weixin_39655160的博客 1073

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

带你了解python爬虫requests模块&BeautifulSoup使用方式!

requests模块介绍 相对于python自带的urllib模块,requests模块提供了相对更高层的api来进行网页访问的工作。 对于requests模块,使用很简单,一般我们会用到两个函数: requests.get(url,params=None,**kwargs) 这里的params是我们要传入的query,它的格式是dict。 requests.post(url,data=None,**kwargs) 这里的data就是我们要提交的表单data,也是直接传入dict就好。 以上两个..

y4544159的博客 761

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【必看!!!】Python—requests模块详解!(文末附带无偿大礼包)

在python内置模块的基础上进行了高度的封装,从而使得python进行网络请求时,变得人性化,使用Requests可以轻而易举的完成浏览器可有的任何操作。Request支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动响应内容的编码,支持国际化的URL和POST数据自动编码。获取文本方式的响应体实例:当你访问 r.text 之时,会使用其响应的文本编码进行解码,并且你可以修改其编码让 r.text 使用自定义的编码进行解码。基本身份认证(HTTP Basic Auth)

2401_85855266的博客 3164

python requests模块_Python爬虫的requests模块你真的学会了吗?来看看这些高级用法!...

1. 文件上传我们知道requests可以模拟提交一些数据。假如有的网站需要上传文件,我们也可以用它来实现,这非常简单,示例如下:import requests files = {'file': open('favicon.ico', 'rb')} r = requests.post("http://httpbin.org/post", files=files) print(r.text)在前...

weixin_39866774的博客 90

别只盯着requests和pandas!这些Python模块才是真正的效率神器

在Python生态中,模块化设计思想是提升开发效率的关键。真正优秀的模块不仅功能强大,更应具备高内聚低耦合的特性,能改变开发者解决问题的思考方式。从爬虫数据采集到数据分析可视化,从轻量级Web服务到自动化运维,许多经典模块如requests、BeautifulSoup、pandas、fastapi等,都以简洁API封装了底层复杂性。理解这些模块的原理与应用场景,能帮助开发者避免重复造轮子,快速构建可靠工具。同时,掌握虚拟环境配置与依赖管理,是规避版本冲突、实现项目可复现的基础。无论是学习python爬虫教程

weixin_31528001的博客 106

python之requests模块详解

目录 requests使用 requests请求方法 requests响应对象属性 Requests模块是一个用于网络请求的模块,主要用来模拟浏览器发请求。其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能。但是这些模块都复杂而且差不多过时了,requests模块简单强大高效,使得其在众多网络请求模块中脱引而出。 requests使用 环境安装:pip install requests 使用流程: 指定url 基于reques

渗透之路,攻防之间皆学问 2万+

python—requests模块详解

requests模块详解

W0ngk,一个安全菜鸡,一直在模仿,尚未有超越。 1万+
上一篇: Pycharm,2024最新版Pycharm下载安装配置教程!
下一篇: 用Python爬虫爬取音乐!(附源码)
Python_trys
博客等级 码龄2年 4369粉丝 377原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值