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

python网络爬虫学习

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

网络爬虫,即Web Spider,是一个很形象的名字。
把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。

HTTP协议中定义了四个与服务器进行交互的方法,分别是GET, POST,PUT,DELETE ,实际对应对服务器内容的“增”删“改”查“四个操作

本篇文章主要记录我学习GET和POST请求方式的过程

首先,如何区分GET 和POST请求?

我们可以简单地通过浏览器地址栏是否改变来加以区分。举例说明,在百度上搜索CSDN时,页面会跳转到搜索结果页,同时浏览器上方的URL也会发生改变。

python网络爬虫学习(一)通过GET和POST方式获取页面内容_第1张图片
如上图所示,变化就在于,在最初的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#显示#


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

因为我们向网站提供的数据是随便写的,并不存在,所以就会得到这样的结果。
python网络爬虫学习(一)通过GET和POST方式获取页面内容_第2张图片

以上是我学习python爬虫的一点小小的经验,现在加以记录并与大家分享

2016-05-20
于朝阳

你可能感兴趣的:(python爬虫学习)