python接受http请求
❶ python通过get,post方式发送http请求和接收http响应
本文实例讲述了python通过get,post方式发送http请求和接收http响应的方法。姿敏分享给轮敏大家供大家参考。
具体如下:
测试用CGI,名字为test.py,放在apache的cgi-bin目录下:
#!/usr/bin/python
import cgi
def main():
print Content-type: text/htmln
form = cgi.FieldStorage()
if form.has_key(ServiceCode) and form[ServiceCode].value != :
print h1 Hello,form[ServiceCode].value,/h1
else:
print h1 Error! Please enter first name./h1
main()
python发送post和get请求
get请求:
使用get方式时,请求数据直接放在url中。
方法一、
?
7
8
import urllib
import urllib2
url =
req = urllib2.Request(url)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
?
7
import httplib
url =
conn = httplib.HTTPConnection(192.168.81.16)
conn.request(method=GET,url=url)
response = conn.getresponse()
res= response.read()
print res
post请求:腊册枝
使用post方式时,数据放在data或者body中,不能放在url中,放在url中将被忽略。
方法一、
import urllib
import urllib2
test_data = {ServiceCode:aaaa,b:bbbbb}
test_data_urlencode = urllib.urlencode(test_data)
requrl =
req = urllib2.Request(url = requrl,data =test_data_urlencode)
print req
res_data = urllib2.urlopen(req)
res = res_data.read()
print res
方法二、
11
import urllib
import httplib
test_data = {ServiceCode:aaaa,b:bbbbb}
test_data_urlencode = urllib.urlencode(test_data)
requrl =
headerdata = {Host:192.168.81.16}
conn = httplib.HTTPConnection(192.168.81.16)
conn.request(method=POST,url=requrl,body=test_data_urlencode,headers = headerdata)
response = conn.getresponse()
res= response.read()
print res
对python中json的使用不清楚,所以临时使用了urllib.urlencode(test_data)方法;
模块urllib,urllib2,httplib的区别
httplib实现了http和https的客户端协议,但是在python中,模块urllib和urllib2对httplib进行了更上层的封装。
介绍下例子中用到的函数:
1、HTTPConnection函数
httplib.HTTPConnection(host[,port[,stict[,timeout]]])
这个是构造函数,表示一次与服务器之间的交互,即请求/响应
host 标识服务器主机(服务器IP或域名)
port 默认值是80
strict 模式是False,表示无法解析服务器返回的状态行时,是否抛出BadStatusLine异常
例如:
conn = httplib.HTTPConnection(192.168.81.16,80) 与服务器建立链接。
2、HTTPConnection.request(method,url[,body[,header]])函数
这个是向服务器发送请求
method 请求的方式,一般是post或者get,
例如:
method=POST或method=Get
url 请求的资源,请求的资源(页面或者CGI,我们这里是CGI)
例如:
url=
或者
url=
body 需要提交到服务器的数据,可以用json,也可以用上面的格式,json需要调用json模块
headers 请求的http头headerdata = {Host:192.168.81.16}
例如:
?
test_data = {ServiceCode:aaaa,b:bbbbb}
test_data_urlencode = urllib.urlencode(test_data)
requrl =
headerdata = {Host:192.168.81.16}
conn = httplib.HTTPConnection(192.168.81.16,80)
conn.request(method=POST,url=requrl,body=test_data_urlencode,headers = headerdata)
conn在使用完毕后,应该关闭,conn.close()
3、HTTPConnection.getresponse()函数
这个是获取http响应,返回的对象是HTTPResponse的实例。
4、HTTPResponse介绍:
HTTPResponse的属性如下:
read([amt]) 获取响应消息体,amt表示从响应流中读取指定字节的数据,没有指定时,将全部数据读出;
getheader(name[,default]) 获得响应的header,name是表示头域名,在没有头域名的时候,default用来指定返回值
getheaders() 以列表的形式获得header
例如:
?
1
2
3
4
5
date=response.getheader(date);
print date
resheader=
resheader=response.getheaders();
print resheader
列形式的响应头部信息:
?
1
2
3
[(content-length, 295), (accept-ranges, bytes), (server, Apache), (last-modified, Sat, 31 Mar 2012 10:07:02 GMT), (connection, close), (etag, e8744-127-4bc871e4fdd80), (date, Mon, 03 Sep 2012 10:01:47 GMT), (content-type, text/html)]
date=response.getheader(date);
print date
取出响应头部的date的值。
希望本文所述对大家的Python程序设计有所帮助。
❷ python 能获取网页的网络请求吗
(一)通过GET和POST方式获取页面内容
网络爬虫,即Web Spider,是一个很形象的名字。
把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。
HTTP协议中定义了四个与服务器进行交互的方法,分别是GET, POST,PUT,DELETE ,实际对应对服务器内容的“增”删“改”查“四个操作
本篇文章主要记录我学习GET和POST请求方式的过程
首先,如何区分GET 和POST请求?
我们可以简单地通过浏览器地址栏是否改变来加以区分。举例说明,在网络上搜索CSDN时,页面会跳转到搜索结果页,同时浏览器上方的URL也会发生改变。
如上图所示,变化就在于,在最初的url后面会附加相关的字段,以?分割url和请求的数据,这些数据就是你要查询字段的编码。。而这个过程,就是典型的GET请求的情况。
POST请求则显得”深藏不露“。它在于你必须通过浏览器输入或提交一些服务器需要的数据,才能给你返回完整的界面,这点其实与GET请求情况有相通之处,但是这个过程浏览器的地址栏是不会发生跳转的。
那POST请求提交的数据是如何传给服务器的呢?可以采用一些分析页面的手段来获取上传的数据。实际上,POST请求是将提交的数据放在HTTP包的包体中,这种方式无疑加强了数据的安全性,不像GET请求那样,用户可以通过跳转的url就可以查看出向服务器发送的数据。另外,POST请求除了提交数据外,还可以提交文件,这点也是GET请求做不到的。
总的来说,在做数据查询时,建议用GET方式;而在做数据添加、修改或删除时,建议用POST方式。
下面用具体代码展示GET与POST方式的差异
#coding =utf-8import urllib2
url="httcom"req=urllib2.Request(url)#req表示向服务器发送请求#response=urllib2.urlopen(req)#response表示通过调用urlopen并传入req返回响应response#the_page=response.read()#用read解析获得的HTML文件#print the_page#在屏幕上显示出来#1234567
这是一个最简单的爬虫程序,功能类似于打开网络主页。如果你此时用浏览器打开网络并查看其源代码,会发现屏幕上的内容和浏览器中完全一样,也就是说,上面这四行代码将我们访问网络时浏览器收到的代码们全部打印了出来。
这就是一个最简单的GET的例子。
再来看一个POST方式的例子
#code=utf-8import urllib2
import urllib
url='http'//把要发送的数据写成字典value={ 'name':'BUPT', 'age':'60', 'location':'Beijing'#字典中的内容随意,不影响#}
data=urllib.urlencode(value)#对value进行编码,转换为标准编码#req=urllib2.Request(url,data)#向url发送请求,并传送表单data#response=urllib2.urlopen(req)#获取响应#the_page=response.read()#解析#print the_page#显示#123456789101112131415
程序运行之后,你可以试试将获取的网页源代码用浏览器打开,会发现得到的页面是这样的
因为我们向网站提供的数据是随便写的,并不存在,所以就会得到这样的结果。
❸ 如何用C++或者python实现接收客户端发送的post请求
一个http请求包括三个部分,分别为请求行,请求报头(请求头),消息主体(请求体),类似以下这样:
{
“args”:{},
“data”:“”,
“files”:{
“file”:“Helloworld!”
},
“form”:{},
“headers”:{……
“Content-Type”:“multipart/form-data;boundary=”,
……
},
“json”:null,
……
}
---------------------
作者:weixin_40283480
来源:CSDN
原文:https://blog.csdn.net/weixin_40283480/article/details/79208413
版权声明:本文为博主原创文章,转载请附上博文链接!
❹ python requests 常用方法
requests 继承了urllib2的所有特性,比urllib简洁高效
requests所有功能都能通过"requests/api.py"中的方法访问
1、安装:
pip install requests
2、get请求:
封装链接中的参数,请求时用params参数进行传递
url = " http://www..com "
resp = requests.get(url,params=,headers=)
3、post请求:
发送的数据必须放在字典中,通过data参数进行传递
url = " http://www..com "
resp = requests.post(url,data=,headers=)
4、查看响应内容:
print (resp.text ) # resp.text 返回的是Unicode格式的数据
print(resp.json()) # res.json() 返回的是json格式的数据
print(resp.content) # resp.content返回的字节类型数据
print (resp.url) # 查看完整url地址
print (resp.encoding) # 查看响应头部字符编码
print(resp.status_code) # 查看响应码
print(resp.cookies) # 查看返回的cookies
print(resp.r.elapsed) #响应速度,从发送请求到响应到达所需要的时间
5、Cookies
import requests
url = " http://www..com "
resp = requests.get(url)
cookiejar = resp.cookies # 返回cookies对象
cookiedic = requests.utils.dict_from_cookiejar(cookiejar) # 将cookies转为字典
6、Sission
说明
1、发送请求前先创建一个session会话,将请求到的cookies存入session中
2、程序的请求要一直使用session.get/post,以保证cookies在程序中的传递
3、程序的请求如果使用requests.get/post需要在参数中增加headers{"cookie:":"****"},否则请求会报错,因为requests.get/post每次执行都会重新开启一个新的请求,丢失已获取的cookies
例子:登录17小说网拿到书架数据
import requests
session = requests.session() # 创建会话(session),将cookie存入session中
data = {
"loginName": "1 7",
"password": "1 5"
}
url = " https://passport.17k.com/ck/user/login "
resp1 = session.post(url,data=data) # 登录,获取cookies
resp2 = session.get(" https://user.17k.com/ck/author/shelf?page=1&appKey=2406394919 ")
print(resp2.json())
7、防盗链处理
防盗链,本质上是溯源,即本次请求的上一次请求,请求时将referer地址加上即可
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36",
"Referer":" https://www.pearvideo.com/video_1734919 " # 防盗链:溯源,确认当前请求的上一级
}
❺ python中request的get和post请求方法详解
一、安装:pip install requests
二、基本概念
1、POST方法
通过 POST 发送到服务器的数据存储在 HTTP 请求的请求主体中:
2、get方法
查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
3、比较 GET 与 POST
下面的表格比较了两种 HTTP 方法:GET 和 POST。
❻ python怎样接收http协议返回的一个zip包
从头开始,找到两个换行符(前面是HEADER,包括服务器、日期、长度、是否支持断点等信息),后面的就是文件内容了.
❼ python的BaseHTTPServer模块怎样接收post请求能给出,把接收到的POST数据输...
#!/usr/bin/python
#encoding=utf-8
'''
基于BaseHTTPServer的http server实现,包括get,post方法,get参数接收,post参数接收。
'''
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import io,shutil
import urllib
import os, sys
class MyRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
mpath,margs=urllib.splitquery(self.path) # ?分割
self.do_action(mpath, margs)
def do_POST(self):
mpath,margs=urllib.splitquery(self.path)
datas = self.rfile.read(int(self.headers['content-length']))
self.do_action(mpath, datas)
def do_action(self, path, args):
self.outputtxt(path + args )
def outputtxt(self, content):
#指定返回编码
enc = "UTF-8"
content = content.encode(enc)
f = io.BytesIO()
f.write(content)
f.seek(0)
self.send_response(200)
self.send_header("Content-type", "text/html; charset=%s" % enc)
self.send_header("Content-Length", str(len(content)))
self.end_headers()
shutil.fileobj(f,self.wfile)
❽ pythonhttp请求引入变量
1. python程序部分
import argparse
FLAGS = tf.app.flags.FLAGS
office31_flags.train()
parser = argparse.ArgumentParser()
parser.add_argument('--unlabeled_data_path', type=str, default=None)
parser.add_argument('--labeled_train_data_dir', type=str, default=None)
parser.add_argument('--train_dir_for_save', type=str, default=None)
parser.add_argument('--pretrained_checkpoint_path', type=str, default=None)
parser.add_argument('--d_cross_entropy', type=float, default=None)
parser.add_argument('--d_fake', type=float, default=None)
parser.add_argument('--d_unlabel', type=float, default=None)
parser.add_argument('--g_fc7_match'早镇, type=float, default=None)
parser.add_argument('迹数--g_logical', type=float, default=None)
parser.add_argument('陆州粗--g_image_match', type=float, default=None)
parser_parameters = parser.parse_args()
FLAGS.unlabeled_data_path = parser_parameters.unlabeled_data_path
FLAGS.labeled_train_data_dir = parser_parameters.labeled_train_data_dir
FLAGS.train_dir_for_save = parser_parameters.train_dir_for_save
FLAGS.pretrained_checkpoint_path = parser_parameters.pretrained_checkpoint_path
FLAGS.d_cross_entropy = parser_parameters.d_cross_entropy
FLAGS.d_fake = parser_parameters.d_fake
FLAGS.d_unlabel = parser_parameters.d_unlabel
FLAGS.g_fc7_match = parser_parameters.g_fc7_match
FLAGS.g_logical = parser_parameters.g_logical
FLAGS.g_image_match = parser_parameters.g_image_match
FLAGS.unlabeled_data_path = os.path.join(path, 'office_data/webcam')
FLAGS.labeled_train_data_dir = os.path.join(path, 'office_data/amazon')
FLAGS.train_dir_for_save = os.path.join(path, 'trained_dir')
FLAGS.pretrained_checkpoint_path = os.path.join(path, 'pretrained_model/bvlc_alexnet.npy')
parser.add_argument('--dataset', type=str, default='CIFAR10', choices=['MNIST', 'SVHN', 'CIFAR10'])
parser.add_argument('--learning_rate', type=float, default=1e-4)
parser.add_argument('--update_rate', type=int, default=5)
parser.add_argument('--lr_weight_decay', action='store_true', default=False)
parser.add_argument('--mp_result', action='store_true', default=False)