通过GET和POST方式获取页面内容

转载 2016年08月28日 20:03:43

网络爬虫,即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-8
import urllib2
url="http://www.baidu.com"
req=urllib2.Request(url)#req表示向服务器发送请求#
response=urllib2.urlopen(req)#response表示通过调用urlopen并传入req返回响应response#
the_page=response.read()#用read解析获得的HTML文件#
print the_page#在屏幕上显示出来#

这是一个最简单的爬虫程序,功能类似于打开百度主页。如果你此时用浏览器打开百度并查看其源代码,会发现屏幕上的内容和浏览器中完全一样,也就是说,上面这四行代码将我们访问百度时浏览器收到的代码们全部打印了出来。
这就是一个最简单的GET的例子。

再来看一个POST方式的例子

#code=utf-8
import urllib2
import urllib
url='http://www.baidu.com'
//把要发送的数据写成字典
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#显示#

程序运行之后,你可以试试将获取的网页源代码用浏览器打开,会发现得到的页面是这样的

因为我们向网站提供的数据是随便写的,并不存在,所以就会得到这样的结果。

这里写图片描述

转自:http://m.blog.csdn.net/article/details?id=51464503

前端页面中跳转并post请求数据

网上找来的资料,做下整理  //模拟表单post提交,且打开新页面跳转   function post(URL, PARAMS) {        var temp_form = doc...
  • luyangyy
  • luyangyy
  • 2016年12月14日 10:19
  • 1445

直接使用POST方法登录网站

浏览器在 POST 数据之后能够自动登录,那么我能不能在代码中直接模拟这个过程呢? 于是我设定了这样的一个流程 1. 设置浏览器的 headers, 设置请求等 2. 使用 httpfox 工具...
  • zhuhengv
  • zhuhengv
  • 2016年02月03日 11:19
  • 9050

对http提出Get请求,获取网页内容

1.MFC的方法 第一种:  首先要包含这个头文件:#include     CInternetSession   mySession;  CHttpFile*   myHttpFil...
  • helonSY
  • helonSY
  • 2011年11月18日 16:23
  • 5156

怎么post数据到一个网页

            写post参数和需要接受数据的页面地址:       ASCIIEncoding encoding = new ASCIIEncoding();        string p...
  • wtnu200
  • wtnu200
  • 2011年02月11日 14:30
  • 4921

http get post 获取网页资源

  • 2016年01月05日 19:46
  • 123KB
  • 下载

通过GET和POST方式获取页面内容

网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。HTTP协议中定义了四个与服务器进行交互的方法,分别是GET, POST,PU...
  • xsj_blog
  • xsj_blog
  • 2016年08月28日 20:03
  • 5331

python网络爬虫学习(一)通过GET和POST方式获取页面内容

python网络爬虫学习 (一)通过GET和POST方式获取页面内容网络爬虫,即Web Spider,是一个很形象的名字。 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。HTTP...
  • kelvinmao
  • kelvinmao
  • 2016年05月20日 21:06
  • 10125

ASP.NET页面间POST和GET传值

ASP.NET页面间的传值有很多种方式,下面介绍一种最常见的传值方式,就是利用HttpContext传值。 分两种情况: 1、当表单提交的时候(POST) 页面1:userName.aspx ...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2011年12月05日 22:05
  • 10085

QT POST/GET 发送/获取网页数据

#include #include QNetworkAccessManager *m_accessManager;Widget::Widget(QWidget *parent) : QWid...
  • liukang325
  • liukang325
  • 2015年07月16日 17:50
  • 11196

Http访问方式GET/POST的测试工具Postman

Http访问方式GET/POST的测试工具Postman,Chrome浏览器的一个扩展插件Postman,此工具话说还是非常好用的,起码不至于自己写Get或者Post的方法....
  • qq_34944016
  • qq_34944016
  • 2016年05月20日 11:56
  • 2143
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过GET和POST方式获取页面内容
举报原因:
原因补充:

(最多只允许输入30个字)