3 GET请求

  • HTTP中最常见的请求之一就是GET请求,首先来详细了解一下利用requests库构建GET请求的方法
  • 基本实例
  • 下面构建一个最简单的GET请求,请求的链接为https://www.httpbin.org/get ,该网站会判断客户端发起的是否为GET请求,如果是,那么它将返回相应的请求信息:
import requests

r = requests.get('https://www.httpbin.org/get')
print(r.text)
  • 运行结果如下:
{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate, br, zstd", 
    "Host": "www.httpbin.org", 
    "User-Agent": "python-requests/2.33.1", 
    "X-Amzn-Trace-Id": "Root=1-6aa53c06-0fd60b422414de1d61b72609"
  }, 
  "origin": "183.212.84.126", 
  "url": "https://www.httpbin.org/get"
}
  • 可以发现,我们成功发起了GET请求,返回结果中包含请求头、URL、IP等信息。
  • 那么,对于GET请求,如果要附件额外的信息,一般怎么添加呢?例如现在想添加两个参数name和age,其中name是abner,age是25,于是URL就可以写成如下内容:
    r = requests.get('https://www.httpbin.org/get?name=abner&age=25')
  • 这样也可以,但是看起来有点不人性化,这些参数还需要我们手动取拼接,实现起来着实不优雅。
  • 一般情况下,我们利用params参数就可以直接传递这种信息了,实例如下:
import requests

data = {
    'name':'abner',
    'age':25
}
r = requests.get('https://www.httpbin.org/get', params=data)
print(r.text)
  • 运行结果如下:
{
  "args": {
    "age": "25", 
    "name": "abner"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate, br, zstd", 
    "Host": "www.httpbin.org", 
    "User-Agent": "python-requests/2.33.1", 
    "X-Amzn-Trace-Id": "Root=1-6aa548a2-41b52ba745c9e98b0718efab"
  }, 
  "origin": "183.212.84.126", 
  "url": "https://www.httpbin.org/get?name=abner&age=25"
}
  • 上面我们把URL参数以字典的形式传给get方法的params参数,通过返回信息我们可以判断,请求的链接自动被构造了https://www.httpbin.org/get?name=abner&age=25 ,这样我们就不用自己构造URL了,非常方便。
  • 另外,网页的返回类型虽然是str类型,但是它很特殊,是JSON格式的。所以,如果想直接解析返回结果,得到一个JSON格式的数据,可以直接调用json方法。实例如下:
import requests

data = {
    'name':'abner',
    'age':25
}
r = requests.get('https://www.httpbin.org/get', params=data)
print(type(r.text))
print(r.json())
print(type(r.json()))
  • 运行结果如下:
<class 'str'>
{'args': {'age': '25', 'name': 'abner'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br, zstd', 'Host': 'www.httpbin.org', 'User-Agent': 'python-requests/2.33.1', 'X-Amzn-Trace-Id': 'Root=1-6aa549e6-6772152845d6f2747a2f8928'}, 'origin': '183.212.84.126', 'url': 'https://www.httpbin.org/get?name=abner&age=25'}
<class 'dict'>
- 可以发现,调用json方法可以将返回结果转化为字典。
- 但需要注意的是,如果返回结果不是JSON格式,就会出现解析错误,抛出json.decoder.JSONDecodeError异常。
  • 添加请求头
  • 我们知道,在发起HTTP请求的时候,会有一个请求头Request Headers,那么怎么设置这个请求头呢?
  • 很简单,使用headers参数就可以完成了。
  • 在刚才的实例中,实际上是没有设置请求头信息的,这样的话,某些网站会发现这并不是一个由正常浏览器发起的请求,于是可能会返回异常结果,导致网页抓取失败。
  • 要添加请求头信息,例如这里我们想要添加一个User-Agent字段,就可以这么写:
import requests

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/153.0.0.0 Safari/537.36'
}
r = requests.get('https://www.httpbin.org/get', headers=headers)
print(r.text)
  • 当然,可以在这个headers参数中添加任意其他字段的信息。
posted @ 2026-09-12 20:49  abner_pan  阅读(7)  评论(0)    收藏  举报