下载libdispatch脚本

最近刚接触python,解决了一个以前无法解决的问题,就是下载苹果开源项目的代码问题,话不多说送上我写的脚本,希望对你有用:

#!/usr/bin/python
# coding=utf-8
import requests
import os
import re
import sys, getopt

def download_file(url, home_path):
    if not home_path.endswith("/"):
        home_path = home_path + "/"

    if not url.endswith("/"):
        url = url + "/"

    print "url: "+ url
    print "home_path: " + home_path
    r = requests.get(url)
    html = r.text
    #筛选数据
    text_array = html.split("\n")
    for line in text_array:
        match = re.match(r'^(<tr>){1}(<td.*</td>){3}(</tr>){1}$', line)
        match1 = re.findall(r'<td valign="top"><a href=".*"><img', line)
        if match and match1:
            #先搞定可以直接下载的
            match2 = re.findall(r'"\w+\.?\w*"', match1[0])
            if match2.__len__() == 2:
                file_name = match2[1].replace('"', "")
                file_path = home_path + file_name
                file_download_url = url + file_name
                if os.path.exists(file_path):
                    os.remove(file_path)
                file_r = requests.get(file_download_url)
                with open(file_path, "wb") as code:
                    code.write(file_r.content)
                print("write file " + file_name + " at:" + file_path)

            #在搞定有文件目录的
            match3 = re.findall(r'"\w+\.?\w*/"', match1[0])
            if match3:
                dir_name = match3[0].replace('"', "")
                home_path_tmp = home_path + dir_name
                if os.path.exists(home_path_tmp):
                    os.popen('rm -rf ' + home_path_tmp)
                os.mkdir(home_path_tmp)
                url_tmp = url + dir_name
                download_file(url_tmp, home_path_tmp)

def main(argv):
    url = ""
    home_path = ""
    try:
        options, args = getopt.getopt(argv, "hu:o:", ["help", "url=", "output="])
        for option, value in options:
            if option in ("-h", "--help"):
                print("""
                -u --url:    输入的url
                -o --output: 保存的路径
                      """)
            if option in ("-u", "--url"):
                url = "" + value
            elif option in ("-o", "--output"):
                home_path = "" + value
            else:
                print "unknow arg: " + value
                sys.exit()
    except getopt.GetoptError:
        sys.exit()

    download_file(url, home_path)

if __name__ == '__main__':
    main(sys.argv[1:])

使用方法:

python Test.py -u "https://opensource.apple.com/source/libdispatch/libdispatch-187.10/" -o "你要保存代码的地方"

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 159,944评论 24 690
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 7,555评论 4 41
  • 自卑带给人的痛苦,只有经历过的人才会懂。 不知有多少人和我一样,对自己总是这样那样地不认可,已经说出口的想要说出口...
    走在青草边阅读 197评论 0 0
  • 1999年正式确定了汝窑烧造区的具体位置和范围(河南宝丰清凉寺),2000年6月至10月正式发掘,同年...
    逍遥般若阅读 270评论 0 2
  • 这是一份专属于嘻宝宝的新年祝福—— 其实作为一个土生土长的中国人,在根本观念里,所谓新年是除夕夜之后的日子...
    苏楚叔叔阅读 138评论 0 1