Python爬虫之:下载软件包

    缘由:为了将 上的openstack软件包下载下来,拉到本地做成yum源,可是openstack的软件包太多,一个一个靠点击势必要耗费很多时间,所以就拿起python写了个简单的爬虫程序来帮助自己下载。

 

    Python,目前来看是一门很火的语言,尤其对于搞Linux运维的同胞来说,更是要熟悉和掌握。因为目前来看很多自动化,云计算的软件都是由python来开发,而且python也是一门跨平台的语言,似乎有了它你可以搞定一切,哈哈。据一个群里搞思科的人说,思科将来也将由python开发的界面来配置,这让我情何以堪。。。。。。

 

    好,废话不说了,直接上代码。。。

 

#!/usr/bin/env python
#encoding: utf8
#
import urllib2
import urllib
import re
import os
downPath = ‘/home/python’
urlPath = ‘https://repos.fedorapeople.org/repos/openstack/openstack-icehouse/epel-6/’
res = r’href=”(.*[^src].rpm)”‘
Cres = re.compile(res)
content = urllib2.urlopen(urlPath).read()
softList = Cres.findall(content)
for i in softList:
    urlSoftware = os.path.join(urlPath,i)
    urllib.urlretrieve(urlSoftware,downPath + ‘/’ + “%s” % i)

 

以上就是一个完整的程序代码

 

解释:

#!/usr/bin/env python  该行内容是声明python开执行文件的位置,和写shell脚本一样。值得注意的是,这里我没有直接使用绝对路径,而是用env这个命令,来进入python的执行环境,从而能够解释python的代码

 

#encoding: utf8

该行内容是用来声明编码格式,可以支持中文的输出。如果没有,当脚本中存在中文时,就会发生 错。但是要注意utf8是在linux下使用的格式,如果你是在windows中,则需要改成cp936或者其他的中文编码。其次要注意,该行的开头有个:# ,这个符 不能省略,在这里不做注释用,这是一种规定吧。

 

 

downPath,urlPath:这是两个变量,downPath定义下载软件包要存放的路径,而urlPath定义的是要下载的软件包所在页面的url,而不是准备的软件包url。因为这里的url路径是要供后面urllib2.urlopen()函数来获取源代码信息的

 

res:是定义一个正则表达式,用来匹配要查找的内容,其中()中的内容就是要获取的软件包名

Cres:这是将res编译后赋值给该变量,编译后的正则表达式执行的速度要比没编译的快

 

content:该变量用来保存使用urllib2.urlopen()获取的源源代码内容,保存的形式是一个字符串

 

softList:该变量用来保存利用正则表达式在content字符串中查找,获取匹配的软件包名形成一个列表

 

最后一个for循环就是用来下载softList列表中所有的软件包。os.path.join()用来连接url和软件包名,形成每个软件包具体的url路径。而urllib.urlretrieve() 则是用来下载软件包,并保存到指定的路径。

这里需要说明的是路径的形式:downPath + ‘/’ + ‘%s’ % i

+:该符 在python中具有连字符的功能,能够连接前后两个相同类型的变量值

‘%s’ % i :这个是对变量的一种引用,%s是字符串格式化形式 % 是格式化符,即将i的值放在%s的位置。

‘/’:该符 在linux系统中是路径分隔符,此时需不需要该符 ,要看downPath的定义,如果downPath路径的后面有’/’符 ,则这里就不需要,否则则需要。注意,如果是windows下面,则路径分隔符就是‘’

因此假如软件包名为nginx-1.6.1.tar.gz,则这里的最终内容为:

/home/python/nginx-1.6.1.tar.gz  即将该软件下载到/home/python/目录下并保存为nginx-1.6.1.tar.gz

 

 

wow,看起来好啰嗦,但是不求高深,只求任何人看了都能直接上手使用,谁让我的博客叫笨蛋的技术呢,哈哈。。

 

好,到此结束。更多python技术文档请看下回分解。。。。。!!!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫urllib211387 人正在系统学习中 相关资源:开源的爬虫软件Heritrix3.1.0_开源爬虫-Java工具类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2014年7月16日
下一篇 2014年7月16日

相关推荐