[关闭]
@chenwei123 2018-02-07T09:25:35.000000Z 字数 1800 阅读 463

网络请求库 requests

Python


GET 请求

1.通过 get 访问一个页面

  1. import requests
  2. r=requests.get('https://www.douban.com/') #豆瓣首页
  3. r.status_code #200
  4. r.text
  5. #结果:<!DOCTYPE HTML>\n<html lang="zh-cmn-Hans" class="">\n<head>\n<meta charset="UTF-8">\n<meta name="description" content="提供图书、电影、音乐唱片的推荐、评论和价格比较,以及城市独特的文化生活。...">

2. 带参数的地址

  1. import requests
  2. r=requests.get('https://www.douban.com/search', params={'q':'python','cat':'1001'})
  3. r.url #实际请求的 url 'https://www.douban.com/search?q=python&cat=1001'
  4. r.encoding #检测编码 'utf-8'
  5. r.content #获得 bytes 对象
  6. #b'<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n...'

3.JSON 数据的获取请求

  1. import requests
  2. r=requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')
  3. r.json()
  4. #{'query':{'count':1, 'created':'2017-12-14T02:35:49Z', ...}}

4.需要请求头中添加参数

  1. import requests
  2. r = requests.get('https://www.douban.com/', headers={'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})

5.指定超时

  1. r = requests.get(url, timeout=2.5) #2.5秒后超时

6.获取响应头

  1. r.headers #{Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Content-Encoding': 'gzip', ...}
  2. r.headers['Content-Type'] #'text/html; charset=utf-8'
  1. r.cookies['ts'] #example_cookie_12345'

8.请求中传入 cookies 参数

  1. cs={'token':'12345', 'status':'working'}
  2. r=requests.get(url, cookies=cs)

POST请求

1.发送 post 请求

data 参数作为 post 请求的数据
  1. import requests
  2. r = requests.post('https://accounts.douban.com/login', data={'form_email':'abc@example.com', 'form_password':'123456'})

requests默认使用 application/x-www-form-urlencoded 编码。要传递 json 数据可以使用以下形式:

  1. import requests
  2. params = {'key':'value'}
  3. r= requests.post(url, json=params) #内部自动序列化为 JSON

2.上传文件,读文件时,用'rb'形式

  1. import requests
  2. upload_files = {'file':open('report.xls', 'rb')}
  3. r = requests.post(url, files=upload_files)

post()方法替换为 put(),delete()等,就可以以 PUTDELETE 方式请求资源。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注