Python3之requests模块

Python3之requests模块

 

  Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。

  发送GET请求

1
2
3
4
import urllib.request
 
= urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = f.read().decode('utf-8')

  发送携带请求头的GET请求

1
2
3
4
5
6
7
import urllib.request
 
req = urllib.request.Request('http://www.example.com/')
req.add_header('Referer''http://www.python.org/')
= urllib.request.urlopen(req)
 
result = f.read().decode('utf-8')

  更多内容点击查看官方文档

  Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得美好了许多,使用Requests可以轻而易举的完成浏览器可有的任何操作。

1. 安装模块

1
pip3 install requests

2. 使用模块

  GET请求

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

  POST请求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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)

  其他请求

1
2
3
4
5
6
7
8
9
10
requests.get(url, params=None**kwargs)
requests.post(url, data=None, json=None**kwargs)
requests.put(url, data=None**kwargs)
requests.head(url, **kwargs)
requests.delete(url, **kwargs)
requests.patch(url, data=None**kwargs)
requests.options(url, **kwargs)
  
# 以上方法均是在此方法的基础上构建
requests.request(method, url, **kwargs)

  更多requests模块相关文档点击查看

3. Http请求和XML实例

实例:检测QQ账号是否在线

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import urllib
import requests
from xml.etree import ElementTree as ET
 
# 使用内置模块urllib发送HTTP请求,或者XML格式内容
"""
f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = f.read().decode('utf-8')
"""
 
 
# 使用第三方模块requests发送HTTP请求,或者XML格式内容
= requests.get('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = r.text
 
# 解析XML格式内容
node = ET.XML(result)
 
# 获取内容
if node.text == "Y":
    print("在线")
else:
    print("离线")

实例:查看火车停靠信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import urllib
import requests
from xml.etree import ElementTree as ET
 
# 使用内置模块urllib发送HTTP请求,或者XML格式内容
"""
f = urllib.request.urlopen('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
result = f.read().decode('utf-8')
"""
 
# 使用第三方模块requests发送HTTP请求,或者XML格式内容
= requests.get('http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getDetailInfoByTrainCode?TrainCode=G666&UserID=')
result = r.text
 
# 解析XML格式内容
root = ET.XML(result)
for node in root.iter('TrainDetailInfo'):
    print(node.find('TrainStation').text,node.find('StartTime').text,node.tag,node.attrib)

  

posted on 2018-01-10 15:14  快乐糖果屋  阅读(146)  评论(0编辑  收藏  举报

导航