windows下python安装及使用
主要内容:
1. python的安装
2. python爬虫的几个小例子
---------------------------------------------------------------------------------------------------------------------------------------------------
1. python的安装
在windows下一般采用jdk+eclipse+python的安装方式,这里eclipse的作用还是个编辑器,写代码用的,把python内嵌到eclipse环境下,实现在eclipse下编写扩展名为.py的代码,然后直接调用python程序进行解析。至于jdk,它和eclipse是对好基友,分不开的。安装时要注意操作系统是32位还是64位,依此来选择相应的安装版本,我的是32位系统,使用的jdk版本是jdk-8u112-windows-i586.exe,eclipse版本是eclipse-jee-neon-1a-win32.zip,python版本为python-2.7.12.msi,具体安装方法参见:http://www.cnblogs.com/Realh/archive/2010/10/04/1841907.html。
2. python爬虫的几个小例子
(1)实现了http://www.cnblogs.com/Bonker/p/3584707.html中的一个小例子
1 name =raw_input('What is your name?') 2 if name.endswith('tank'): 3 print 'Hello tank' 4 elif name.endswith('xiao'): 5 print 'Hello xiao' 6 else: 7 print 'Hello Strange'
解释一下,第一行创建name对象,该对象通过python内建函数raw_input,通过读取控制台的输入与用户实现交互,运行时会在控制台提示"What is your name?",用户需要在其后输入字符信息;
第2~7行,是一个多分支选择结构,判断的依据是name对象的endswith方法,endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False,运行结果如下:
(2)读取百度网页信息的一个小例子
1 #coding:utf-8 2 ''' 3 Created on 2016年12月20日 4 5 @author: Adminstrator 6 ''' 7 import urllib2 8 ''' 9 请求的地址创建一个Request对象, 10 通过调用urlopen并传入Request对象,将返回一个相关请求response对象, 11 12 ''' 13 req = urllib2.Request('http://www.baidu.com') 14 response = urllib2.urlopen(req) 15 #Response中调用.read() 16 the_page = response.read() 17 18 print the_page
#coding:utf-8 要在py文件里面写中文,需要添加这样一行声明文件编码的注释,否则python2会默认使用ASCII编码;
第2行和第6行的'''代表这两行之间的内容为注释,第8行和第12行同理。
关于urllib2,这篇博客解释的很清楚:http://www.360doc.com/content/13/0204/13/3046928_264179264.shtml,程序中也有注释,调用urlopen函数对请求的url返回一个respons对象,这个respons是一个类file的对象,因此我们可以用read()函数来操作这个respons对象。执行效果如下图所示:
(3)下载百度贴吧中对应页码内的所有页面并存储为html文件
1 #coding:utf-8 2 import string, urllib2 3 #定义百度函数 4 def baidu_tieba(url,begin_page,end_page): 5 for i in range(begin_page, end_page+1): 6 sName = string.zfill(i,5) + '.html'#自动填充成五位的文件名 7 print '正在下载第' + str(i) + '个网页,并将其存储为' + sName + '......' 8 f = open(sName,'w+') 9 m = urllib2.urlopen(url + str(i)).read() 10 f.write(m) 11 f.close() 12 13 #-------- 在这里输入参数 ------------------ 14 15 # 这个是三亚学院 的百度贴吧中某一个帖子的地址 16 #bdurl = 'http://tieba.baidu.com/p/2296017831?pn=' 17 #http://tieba.baidu.com/f?kw=%C8%FD%D1%C7%D1%A7%D4%BA&fr=ala0&tpl=5 18 #http://tieba.baidu.com/f?kw=%E4%B8%89%E4%BA%9A%E5%AD%A6%E9%99%A2&ie=utf-8 19 #iPostBegin = 1 20 #iPostEnd = 10 21 22 bdurl = str(raw_input(u'请输入贴吧的地址,去掉pn=后面的数字:\n')) 23 begin_page = int(raw_input(u'请输入开始的页数:\n')) 24 end_page = int(raw_input(u'请输入终点的页数:\n')) 25 #-------- 在这里输入参数 ------------------ 26 27 #调用 28 baidu_tieba(bdurl,begin_page,end_page)
第2行import string就是引入string模块,使得我们可以调用与字符串操作相关的函数。比如后面的zfill和str函数
第5行for in range是循环的意思,示例:
for i in range(1,5):
print i
>>>
1
2
3
4
它是如何工作的:
打印一个数字序列。我们使用内置的range函数生成这个数字序列。
我们在这里所做的是提供两个数字,range返回一个从第一个数字到第二个数字的一个数字序列。例如,range(1,5)给出序列[1, 2, 3, 4]。默认情况下,range 步距取为1。如果我们提供第三个数字,range那么它变成了步距。例如range(1,5,2)得到[1,3]。for循环然后遍历这个范围,for i in range(1,5)相当于 for i in [1, 2, 3, 4],这就像把序列中的每一个数(或对象)分配给i,一次一个,然后为每个i值执行该语句块。在上面这个示例中,在语句块中我们只是打印它的值。
程序段中,第6~11行是循环体里的语句:第6行string.zfill(i,5),还有另外一种写法str(i).zfill(5),zfill()方法是垫零左侧的字符串,以填补宽度,如i的值为1,填补宽度为5,则会显示00001;
第8行f=open(sName,'w+'),以写入方式打开变量sName存储的字符串命名的文件,如果该文件不存在,则创建它。
执行效果如下图所示: