IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    yum库批量下载功能

    longhao (longtask@gmail.com)发表于 2010-10-13 05:35:47
    love 0

        觉得国外的yum库下载太慢,就搞一个mirror玩玩。需求较为简单:给定一个url,把url显示出来的rpm为后缀的文件全部下载到本地。写脚本解决问题当日最简单了,所以我就出了个菜鸟的思路:

    • 下载页面文件到本地
    • 分析文件中<a></a>的href中带有rpm后缀的字符串A
    • 拼上url和A,然后wget

        实现到代码如下:

    #!/usr/bin/env python
    import os
    url = 'http://download.fedora.redhat.com/pub/epel/5Server/x86_64/'
    os.system('wget '+ url)
    for line in open('index.html','r').readlines():
        start = line.find('<a href=')
        if start != -1:
            str = line[start:line.find('</a>')]
            if str.endswith('rpm'):
                os.system('wget '+url + str.split('\"')[1]);

         代码看起来总是觉得很别扭。由于对字符串的操作没有深入思考如何弄,仅仅看了相关规则实现了需求,所以不能不找鱼哥 @nnfish 求助优化一下。使用正则表达式优化后的操作代码如下:

    import urllib,re,os
    url = 'http://download.fedora.redhat.com/pub/epel/5Server/x86_64/'
    data = urllib.urlopen(url).read()
    urls = re.findall(r'href="(.*\.rpm?)"', data)
    for url in urls:
        os.system('wget '+url)

        用Python写的一个HTML/XML的解析器Beautiful Soup来处理相关到html字符串也是一个好的选择,可以搜索引擎上搜索学习具体操作



沪ICP备19023445号-2号
友情链接