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或者其他的中文编码。其次要注意,该行的开头有个:# 号,这个符号不能省略,在这里不做注释用,这是一种规定吧。
import开头的几行,都是导入要用到的模块。urllib2,urllib看起来很相似,都是处理weburl的,但是也有区别。至于有什么区别自己看着办。。。。。 re模块提供了正则表达式的功能,os模块提供了跟系统操作有关的功能
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技术文档请看下回分解。。。。。!!!!!
转载于:https://blog.51cto.com/mingyang/1543394
Python爬虫之:下载软件包相关推荐
- python爬虫下载-python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- python 下载文件-python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- python爬虫批量下载“简谱”
python讨论qq群:996113038 导语: 上次发过一篇关于"python打造电子琴"的文章,从阅读量来看,我们公众号的粉丝里面还是有很多对音乐感兴趣的朋友的.于是,今天我 ...
- 新一配:perl循环调用python爬虫批量下载喜马拉雅音频
新一配:perl循环调用python爬虫批量下载喜马拉雅音频 手机下载喜马拉雅音频后,获得的音频文件虽然可以转成mp3格式,但其文件名却是一长串字符串,无法辨别是哪一集,网上找了各种工具,都有局限性, ...
- Python爬虫实战——下载小说
Python爬虫实战--下载小说 前言 第三方库的安装 示例代码 效果演示 结尾 前言 使用requests库下载开源网站的小说 注意:本文仅用于学习交流,禁止用于盈利或侵权行为. 操作系统:wind ...
- 2021-04-01裁判文书网数据python爬虫更新下载
长期持续更新数据 2020-11-08裁判文书网数据python爬虫更新下载添加链接描述 截至3月已从数据库中下载1亿1200万条裁判文书数据,有需要数据的伙伴可以(。・∀・)ノ゙嗨前台QQ7900- ...
- 【爬虫实战项目】Python爬虫批量下载音乐飙升榜并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载音乐飙升榜并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是 ...
- 2020-11-08裁判文书网数据python爬虫更新下载
2020年9月1日更新 文书网2020年8月31日晚更新之后就需要手机注册验证登录了,所以,账号是个问题. 分析 1. 登录 比较简单哦,主要难题是多账号的登录及session的更新维护. 2.其它 ...
- 【爬虫实战项目】Python爬虫批量下载评书音频并保存本地(附源码)
前言 今天给大家介绍的是Python爬虫批量下载评书音频并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这 ...
- Python爬虫——urllib下载和订制请求对象
文章目录 Python爬虫--urllib下载和订制请求对象 1.urllib下载资源 2.定制请求 Python爬虫--urllib下载和订制请求对象 1.urllib下载资源 下载资源使用urll ...
最新文章
- Dynamics Ax 2012 – AIF Import CSV File
- ESP32模块的MicroPython的基本实验
- 计算机动画制作 实验要求,A074计算机动画制作实验——动画制作初步
- sql server set赋值和select 赋值的区别以及使用方法
- java 编译开关_java – 字符串是关于开关的数字类型,并始终编译为lookupswitch?
- linux 正在运行的程序不能拷贝_如何实现在Windows上运行Linux程序,附示例代码
- java document select_javasript 操作option select
- 计算机常用控温算法,常用温度控制方法原理 -解决方案-华强电子网
- priority_queue 用法总结
- Python入门--字符串的查询操作,find,rfind,index,rindex
- android启动服务的生命周期,Android Service的两种启动方式以及生命周期
- php 工厂模式作用,PHP工厂模式的好处概述
- FastDFS原理介绍及集群搭建
- Unity 实现部分模型流光效果
- movie计算机英语作文,my favorite movie英语作文100字
- exchange2016卸载报错安装程序无法卸载,因为mscorsvw(9476)具有打开的文件
- BabaSSL:支持半同态加密算法 EC-ElGamal
- 博客赚钱也疯狂--个人博客如何赚钱
- c语言错误:error C2018: unknown character '0xa3'
- 6G需要1000亿个基站;5G套餐资费年内或降至50至60元;国内首款L4级5G无人驾驶汽车量产...
热门文章
- c语言用指针删除链表free,leetcode剑指 Offer 18(删除链表的节点)--C语言实现
- oracle profile为何被修改了,【图片】快被oracle玩死了,谁能告诉我为啥插入条数不同结果差别这么大!【java吧】_百度贴吧...
- java 创建静态方法_Java 在静态方法中创建Local类
- java48关键_Java48个关键字速查表
- 几何画板手机版_钉钉+几何画板+手写板,网络授课变简单
- 帝国cms tag生成html,帝国CMS Tag关键词自动锚文本插件 tag标签自动转换为内容内链...
- Spring Security UserDetail
- pandas to_sql
- Flask 应用上下文
- pandas 散布矩阵