python之requests模块

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

  发送GET请求

import urllib.request

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

  发送携带请求头的GET请求

import urllib.request

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‘)

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

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

1. 安装模块

pip3 install requests

2. 使用模块

  GET请求

# 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、基本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)

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

3. Http请求和XML实例

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

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)

  

时间: 2024-11-06 15:40:22

python之requests模块的相关文章

python之requests模块-cookie

cookie并不陌生,与session一样,能够让http请求前后保持状态.与session不同之处,在于cookie数据仅保存于客户端.requests也提供了相应到方法去处理cookie. 在python之requests模块-session中,我们知道了requests中的session对象能够在请求之间保持cookie,它极大地方便了我们去使用cookie.当我们想设置方法级别中的请求时,可以如下面示例一样操作. import requests s = requests.session(

python之requests模块-hook

requests提供了hook机制,让我们能够在请求得到响应之后去做一些自定义的操作,比如打印某些信息.修改响应内容等.具体用法见下面的例子: import requests # 钩子函数1 def print_url(r, *args, **kwargs): print("raw_url "+r.url) # 钩子函数2 def change_url(r, *args, **kwargs): r.url = 'http://change.url' print("change

python的requests模块

使用python进行接口测试得时候可以使用requests模块,是基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库 安装requests是模块 pip install requests requests模块的使用 requests支持http的请求类型,如get,post,delete,put,head等 如: r=requests.get("www.baidu.com") r=requests.post("www.baidu.com&qu

python使用requests模块完成get/post/代理/自定义header/自定义cookies

一.背景说明 由于python3的urllib与python2有不少差别,而且urllib.request请求的一些写法不太符合人的思维习惯(文档也相当难看) 所以搞得真不太想用python,直到看urllib.request文档时注意到下边这句话 比较起来requests确实比较好用,文档也当清晰:需要自己额外安装一下,但仍比较推荐使用. 1.1 适用版本 适用于python2.6.python2.7.python3.4及以上版本,参见官方说明. 我这里使用的是当前最新的python3.7.

python (requests模块使用)

requests模块是python的一个第三方模块,它是基于python自带的urllib模块封装的,用来发送http请求和获取返回的结果,操作很简单.需要自己安装  pip install requests import requests req = requests.get('http://www.baidu.cn',data={'username':'xxx'},cookies={'k':'v'}, headers={'User-Agent':'Chrome'},verify=False,

基于python第三方requests 模块的HTTP请求类

使用requests模块构造的下载器,首先安装第三方库requests pip install requests 1 class StrongDownload(object): 2 3 def __init__(self): 4 #拿到代理iplist 5 self.iplist = ['自己想办法搞'] # 6 self.UserAgent = ['自己想办法搞'] 7 8 def get(self,url,timeout,proxy=False,num_retries=3): 9 '''ur

python之requests模块学习(一)

安装好requests后调用出现: 是因为当前路径存在了和模块一样的名称: http://stackoverflow.com/questions/12258816/module-object-has-no-attribute-get-python-error-requests 如如果出现重命名不了该文件: 是因为py文件里面存在requests必须要全部删除后才能重命名,包括注释里面也不能有"""@version:2.7.10@author:chenmingli# @file

【python】requests模块初探(一)

一.写在前面 Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求.Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner. 那么,requests都有哪些应用场景呢? 1.服务器编程基础: 2.爬虫利器: 3.自动化接口测试: 4.运维监控脚本 等等 本篇,我就记录一下reques

python之requests模块中的params和data的区别

params的时候之间接把参数加到url后面,只在get请求时使用: 1 import requests 2 url='https://api.ireaderm.net/account/charge/info/android' 3 data={'recharge':36,'fee_id':'ireader_nonrenew_vip'} 4 header={ 5 'X-ZY-Timestamp':'1502097587609', 6 'X-ZY-Sign':'xxxxxxxxxxxxxxxxxxx