request 模块

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

# /usb/bin/env python
#! -*- encoding=utf=8 -*-
#example:

import urllib.request

#例子1
f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')
result = f.read().decode('utf=8')
print(result)

#例子2 带请求头
req = urllib.request.Request("http://www.example.com")
req.add_header("Referer","http://www.python.org")
r = urllib.request.urlopen(req)

result = f.read().decode('utf-8')

print(result)

 

 

 

 

requests 模块

requests 模块的安装
pip3 install requests

#使用模块

#1 . 无参数实例

import requests

ret = requests.get('https://github.com/timeline.json')
print(ret.url)
print(ret.text)

#有参数实例
import requests
payload = {'key1':'value1','key2':'value2'}
ret = requests.get("http://httpbin.org/get",params=payload)

print(ret.url)
print(ret.text)


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)

 

 

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)

其他请求

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格式内容
r = 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("离线")

  

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格式内容
r = 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)