Python requests实现HTTP请求

本文介绍了如何使用Python的requests库进行HTTP请求,包括GET、POST方法的使用,设置参数、HEADER以及其它HTTP方法的简单示例,是Python网络请求的实用教程。

Python requests实现HTTP请求

By HelloWeb

2017-06-10

Python3本身的urllib也可以实现HTTP请求,不过requests这个库的功能简直逆天了,这里对HTTP请求中的GET方法、POST方法进行了实验。

一、环境配置

1.Web应用

为配合Python实现HTTP请求,需要访问Web应用,这个Web应用可以是任意的一个Web网站或Web应用。为了更好查看实现功能的基本过程,这里采用自编的Web应用(使用PHP语言实现)。关于Web应用的环境这里就描述了,读者可以自行搜索有关的资料了,否则偏题有点远了。

2.Python 3

下载地址:https://www.python.org/

当前最新版本3.6.1,我的机器是Win7,所以下载的是Windows版本python-3.6.1.exe,下载后执行可执行程序,按照提示安装即可(注意选择Add python 3.6 to PATHpip工具)。安装完成后,python程序就可以直接执行了。

3.Requests

下载地址:https://pypi.python.org/pypi/requests/

当前版本是2.17.3,下载源码版本requests-2.17.3.tar.gz,解压后,执行安装命令pip install requests,即可安装成功,在python命令行形式下,执行import requests,如果没有报错,则安装成功了。

友情提醒1:慎重使用setup.py install来执行安装,可能导致某些库的安装不全,偶就在这里浪费了很多的时间啊。

友情提醒2:由于python语言的特性,建议使用IDLE编辑工具。

二、GET请求

1 基本GET请求和响应

基本请求中的Web应用程序如下:

<?php
 header("Content-type: text/html; charset=utf-8");
 setcookie("cookietest","1234567890",time()+3600*24);
 print("It is a test !");
?>

requests库中的get函数实现和HTTPGET功能,Python程序代码如下:

import requests
req=requests.get('http://127.0.0.1/test1.php')
print(req.text)
很简单吧,这里要提醒的是get 函数的参数要写全,不要写成“ 127.0.0.1/test1.php ”,这样写会出错哦。

这里对返回的信息处理很简单,只是打印了消息体中的信息req.text”。对于返回值,当然是一个和HTML文档相关的一个Response对象了。对于这个Response对象的属性值有textcontent(字节形式)、cookiesheadersraw(原始字节形式,对应HTTPResponse对象,这里不介绍了)、status_code

2 带参数的GET请求

测试用的PHP程序如下:

<?php
 header("Content-type: text/html; charset=utf-8");
 setcookie("cookietest","1234567890",time()+3600*24);
 $name=$_GET['name'];
 $pass=$_GET['pass'];
 print("Welcome, ".$name."<br>");
 print("Your password is :".$pass."<br>");
?>

测试用的python程序如下:

import requests
url='http://127.0.0.1/test1.php'
data={'name':'abcd','pass':123456}
req=requests.get(url,params=data,timeout=1)
print(req.text)

3 设置HEADER参数

测试输入两个HEADER,其中一个是cookie值,另一个是测试用自定义头信息t2,测试用PHP程序如下:

<?php
 header("Content-type: text/html; charset=utf-8");
 setcookie("cookietest","1234567890",time()+3600*24);
 $name=$_GET['name'];
 $pass=$_GET['pass'];
 print('Welcome, '.$name."\r\n");
 print("Your password: ".$pass."\r\n");
 $header1='';
 $header2='';
 foreach($_SERVER as $key=>$value){
    if(($key=='HTTP_COOKIE')||($key=='HTTP_T2')){
     print($key.":".$value."\r\n");
    }
 }
?>

测试用python程序如下:

import requests
url='http://127.0.0.1/test1.php'
data={'name':'abcd','pass':123456}
headers={'cookie':'abcdefg','t2':'12345678'}
req=requests.get(url,params=data,headers=headers,timeout=1)
print(req.text)

三、POST请求

基本的POST请求方法比较简单了,测试用的PHP程序代码如下:

<?php
 header("Content-type: text/html; charset=utf-8");
 setcookie("cookietest","1234567890",time()+3600*24);
 $name=$_POST['name'];
 $pass=$_POST['pass'];
 print('Welcome, '.$name."\r\n");
 print("Your password: ".$pass."\r\n");
?>

测试用python代码如下:

import requests
url='http://127.0.0.1/test1.php'
data={'name':'abcd','pass':123456}
req=requests.post(url,data=data,timeout=1)
print(req.text)

可以使用POST方法传输文件

import requests
url='http://127.0.0.1'
files={'file':open('test.txt','rb')}
req=requests.options(url,files=files)
print(req.text)

四、其他方法

HTTP请求还包括OPTIONS, PUT, DELETE等,分别对应函数optionsputdelete。不过好像没有TRACE对应的函数,下次再找找。

这里给一个options的示范python程序,代码如下:

import requests
url='http://127.0.0.1'
req=requests.options(url)
print(req.headers)





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值