请选择 进入手机版 | 继续访问电脑版
楼主: MRchesian
822 3

[程序分享] python 爬虫 HTTP实例 [推广有奖]

  • 1关注
  • 7粉丝

硕士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
6932 个
通用积分
68.0845
学术水平
2 点
热心指数
2 点
信用等级
1 点
经验
1074 点
帖子
49
精华
0
在线时间
214 小时
注册时间
2017-12-9
最后登录
2024-3-11

MRchesian 学生认证  发表于 2018-3-12 14:35:55 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

通俗的说,Get是直接请求、打开,Post是请求、对方通过后才能打开。

Get和Post最重要的区别是,Get方式是直接一链接形式访问,链接中包含了所有的参数,当然如果包含了密码什么的是不安全的,不过你可以直观的看到自己提交的内容。

Post则不会再网址上显示所有参数,不过如果你想直接查看提交了什么就不太方便了。可以根据自己的需要酌情选择。

以下是典型的Post方式

  1. import urllib  
  2. import urllib2  
  3.   
  4. url = "https://www.baidu.com/"  
  5.   
  6. value = {}  
  7. value['username'] = 'Alice'  
  8. value['password'] = '111'  
  9. data = urllib.urlencode(value)  
  10.   
  11. req = urllib2.Request(url, data)  
  12. response = urllib2.urlopen(req)  
  13.   
  14. print response.read()
复制代码

以下是典型的Get方式

  1. import urllib  
  2. import urllib2  
  3.   
  4. url = "https://www.baidu.com/"  
  5. value = {}  
  6. value['username'] = 'Alice'  
  7. value['password'] = '111'  
  8. data = urllib.urlencode(value)  
  9. geturl = url + "?" + data  
  10.   
  11. req = urllib2.Request(geturl)  
  12. response = urllib2.urlopen(req)  
  13.   
  14. print response.read()
复制代码

此处与上面的不同是有了个 geturl,它是把原来的 url 加 ? 加 编码后的参数。所以会再网址上显示所有参数。

HTTP协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作,其中最常见请求方式是GET和POST,并且现在浏览器一般只支持GET和POST方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息,他们之间主要区别如下:

1)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的,这里安全是指该操作用于获取信息而非修改信息,幂等是指对同一URL的多个请求应该返回同样的结果(这一点在实质实现时,可能并不满足);

POST表示可能修改变服务器上的资源的请求。

2)GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64编码;POST把提交的数据则放置在是HTTP包的包体中。

3)因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系,理论上URL长度是没有限制的,即HTTP协议没有规定URL的长度,但在实质中,特定的浏览器可能对这个长度做了限制;理论上POST也是没有大小限制的,HTTP协议规范也没有进行大小限制,但在服务端通常会对这个大小做一个限制,当然这个限制比GET宽松的多,即使用POST可以提交的数据量比GET大得多。

最后,网上有人说,POST的安全性要比GET的安全性高,实质上POST跟GET都是明文传输,这可以通过类似WireShark工具看到。总之,Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python HTTP ttp response password

html56 发表于 2018-3-12 20:53:40 |显示全部楼层 |坛友微信交流群
看看是什么

使用道具

cheetahfly 在职认证  发表于 2018-3-14 08:36:43 |显示全部楼层 |坛友微信交流群
有urllib2包,应该是基于2.7版的吧

使用道具

MRchesian 学生认证  发表于 2018-3-14 22:29:40 |显示全部楼层 |坛友微信交流群
cheetahfly 发表于 2018-3-14 08:36
有urllib2包,应该是基于2.7版的吧
是啊 个人比较喜欢2.7的

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-28 20:50