get和post方式总结

get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在servlet/jsp中就无法处理发挥java的比如vector之类的功能)。

post方式:就传输方式讲参数会被打包在数据报中传输,从CONTENT_LENGTH这个环境变量中读取,便于传送较大一些的数据,同时因为不暴露数据在浏览器的地址栏中,安全性相对较高,但这样的处理效率会受到影响。

get 请求表示客户端请求一个uri,服务器返回客户端请求的uri,post请求表示客户端请求的时候还要提交数据,比喻提交form表单,要提交的数据会放到请求报文的body部分。服务器收到后这样的请求后通常需要来处理这些数据。

在Form里面,可以使用post也可以使用get。它们都是method的合法取值。但是,post和get方法在使用上至少有两点不同:

1、Get方法通过URL请求来传递用户的输入。Post方法通过另外的形式。

2、Get方式的提交你需要用Request.QueryString来取得变量的值,而Post方式提交时,你必须通过Request.Form来访问提交的内容。

仔细研究下面的代码。你可以运行来感受一下:

<% IfRequest.QueryString("Text")<> "" Then %>通过get方法传递来的字符串是: "<%=Request.QueryString("Text")%>"

<% End If %>

<% IfRequest.Form("Text")<> "" Then %>通过Post方法传递来的字符串是: "<%=Request.Form("Text")%>"

<% End If %>

把上面的代码保存为getpost.asp,然后运行,首先测试post方法,这时候,浏览器的url并没有什么变化,返回的结果是:

通过Post方法传递来的字符串是: "Hello World"

然后测试用get方法提交,请注意,浏览器的url变成了:

http://localhost/general/form/getpost.asp?Text=Hello+World

而返回的结果是:

通过get方法传递来的字符串是: "Hello World"

最后再通过post方法提交,浏览器的url还是:

http://localhost/general/form/getpost.asp?Text=Hello+World

而返回的结果变成:

通过get方法传递来的字符串是: "Hello World"

通过Post方法传递来的字符串是: "Hello World"

提示:通过get方法提交数据,可能会带来安全性的问题。比如一个登陆页面。当通过get方法提交数据时,用户名和密码将出现在URL上。如果:

1、登陆页面可以被浏览器缓存;2、其他人可以访问客户的这台机器。

那么,别人即可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,get方法会带来严重的安全性问题。建议在Form中,建议使用post方法。

Python下载网页的几种方法

通过get的方法:

fd =urllib2.urlopen(url_link)

data= fd.read()

使用get方式时,url类似如下格式:

index.jsp?id=100&op=bind

GET报问头如下:

GET /sn/index.php?sn=123&n=asa HTTP/1.1

Accept: */*

Accept-Language: zh-cn

host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: 12

Connection:close

get方法还可以通过如下方式实现:

defGetHtmlSource_Get(htmurl):

htmSource= ""

try:

urlx=httplib.urlsplit(htmurl)

conn=httplib.HTTPConnection(urlx.netloc)

conn.connect()#建立连接

conn.putrequest("GET", htmurl, None) #请求类型

conn.putheader("Content-Length", 0)

conn.putheader("Connection", "close")

conn.endheaders()

res=conn.getresponse()

htmSource=res.read()exceptException(), err:

trackback.print_exec()

conn.close()return htmSource

使用post方式时,POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,可用来传送文件。POST报文头如下:

POST /sn/index.php HTTP/1.1

Accept: */*

Accept-Language: zh-cn

host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: 12

Connection:closes

n=123&n=asa

无论是post还是get方式,他们所传递的数据都要进行url编码。每对name/value由&符分开;每对来自表单的name/value由=符分开;如果用户没有输入值给这个name,那么这个name还是出现,只是无值。;任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码。urllib库提供了一个函数来实现url的编码:

search=urllib.urlencode({'q':'python'})#'q=python'

通过post发送请求:

importhttplib,urllib;#定义需要进行发送的数据

params = urllib.urlencode({'cat_id':'6','news_title':'标题-Test39875','news_author':'Mobedu','news_ahome':'来源','tjuser':'carchanging','news_keyword':'|','news_content':'测试-Content','action':'newnew','MM_insert':'true'});#定义一些文件头

headers = {"Content-Type":"application/x-www-form-urlencoded","Connection":"Keep-Alive",

"Referer":"http://192.168.1.212/newsadd.asp?action=newnew"};#与网站构建一个连接

conn = httplib.HTTPConnection("192.168.1.212");#开始进行数据提交 同时也可以使用get进行

conn.request(method="POST",url="/newsadd.asp?action=newnew",body=params,headers=headers);#返回处理后的数据

response =conn.getresponse();#判断是否提交成功

if response.status == 302:print "发布成功!";else:print "发布失败";#关闭连接

conn.close();

也可以类似于get方法来实现:

defGetHtmlSource_Post(getString):

htmSource= ""

try:

url= httplib.urlsplit("http://app.sipo.gov.cn:8080")

conn=httplib.HTTPConnection(url.netloc)

conn.connect()

conn.putrequest("POST", "/sipo/zljs/hyjs-jieguo.jsp") #post方法

conn.putheader("Content-Length", len(getString))

conn.putheader("Content-Type", "application/x-www-form-urlencoded")

conn.putheader("Connection", "Keep-Alive")

conn.endheaders()

conn.send(getString)#Http包的body

f=conn.getresponse()if notf:raise socket.error, "timed out"htmSource=f.read()

f.close()

conn.close()exceptException(), err:

trackback.print_exec()

conn.close()return htmSource

怎么在python下载网站内容-Python下载网页的几种方法相关推荐

  1. 怎么在python下载网站内容-python从网站上下载东西

    import requests res=requests.get('http://www.gutenberg.org/cache/epub/112/pg112.txt')#requests返回一个re ...

  2. python怎么复制字符串_python字符串复制的几种方法

    >>> list1 = [1,2] >>> id(list1) 50081032 >>> list2 = list1.copy() >> ...

  3. python网页爬取方法_Python爬取网页的三种方法

    # Python爬取网页的三种方法之一:  使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://w ...

  4. python获取屏幕文字_详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)...

    前言: 今天为大家带来的内容是详解:四种方法教你对Python获取屏幕截图(PyQt , pyautogui)本文具有不错的参考意义,希望能够帮助到大家! Python获取电脑截图有多种方式,具体如下 ...

  5. Python实现从url中提取域名的几种方法

    这篇文章主要介绍了Python实现从url中提取域名的几种方法,本文给出了3种方法实现在URL中提取域名的需求,需要的朋友可以参考下. 从url中找到域名,首先想到的是用正则,然后寻找相应的类库.用正 ...

  6. Python计算程序运行时间秒级/毫秒级的两种方法datetime和time

    Python计算程序运行时间秒级/毫秒级的两种方法datetime和time 简单粗暴,先上代码: import datetime import time# 方法一:datetime.datetime ...

  7. 网站推广最实用不过的七种方法

    网站推广最实用不过的七种方法 网站推广最实用不过的七种方法 对于网站推广,方法很多,并且根据不同类型的网站,其推广方法也不太一样,但是无论怎么样?他们还是有一些基础地方是相同的.下面我就以中国铝业网的 ...

  8. WPF编程,将控件所呈现的内容保存成图像的一种方法。

    WPF编程,将控件所呈现的内容保存成图像的一种方法. 原文:WPF编程,将控件所呈现的内容保存成图像的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.ne ...

  9. 怎么在python下载网站内容-分析某网站,并利用python自动登陆该网站,下载网站内容...

    本帖最后由 愤怒的小车 于 2019-5-8 09:41 编辑 一:本代码是我研究了好久才写出来,七功能主要有自动登陆.自动识别验证码.以及自动识别下载格式进行判断下载! 首先,搬上我们的主角网址,h ...

最新文章

  1. 小米今日正式进军越南市场 借助合作方铺渠道分销
  2. python类型转换-马哥教育官网-专业Linux培训班,Python培训机构
  3. web常见几种处理图标方法 【转】
  4. Python基础知识实例讲解
  5. android 支付宝月账单 统计图_2019年你抢了多少微信红包?花了多少?(微信账单查看教程)...
  6. 解决RM删除没有释放空间问题
  7. Spring整合mybatis中的sqlSession是如何做到线程隔离的?
  8. Android 中View仅仅能接收到ACTION_DOWN无法接收ACTION_MOVE和ACTION_UP解决的方法
  9. 联想7400打印机如何与手机连到一起_激光打印机与喷墨打印机,哪个使用成本更低?...
  10. Excel2019画正态分布图和正态曲线组合图
  11. 2022拼多多详情/拼多多商品详情/拼多多sku详情
  12. TYPE-C接口的定义诠释以及功能参数挖掘
  13. Softing为艾默生提供AMS设备管理系统的连接解决方案
  14. KITTI下使用SGBM立体匹配算法获得深度图
  15. Creo二次开发 Creo4.0 Qt5 动态部署发布
  16. 技术讨论 | 如何绕过并利用Bucket的上传策略和URL签名
  17. 数蛙科技百亿级物流标签轨迹时序数据压测
  18. 玩机搞机---全网最详细的手机全机型 刷机教程 二
  19. Zabbix的item数据采集、tigger监控规则、action触发动作原理介绍
  20. Java小试牛刀—数组

热门文章

  1. Android开发之”再按一次退出程序“的实现
  2. 码农翻身之——分布式,集群,负载均衡
  3. java内存区域之程序计数器
  4. android 入门-工序
  5. Poj 1112 Team Them Up!
  6. ecshop的商品列表输出中多出一条空记录
  7. 阅读代码和修改别人代码的一些技巧以及注意事项
  8. python快速编程入门课后程序题答案-Python编程从零基础到项目实战 完整PPT+习题答案...
  9. python拿什么做可视化界面好-手把手教你用Python做个可视化的“剪刀石头布”小游戏...
  10. 大学计算机基础课程报告python-Python程序设计习题解析(大学计算机基础教育规划教材)...