Python下载163yum源文件

OnionT@KillBoy
OnionT@KillBoy
作者
47
文章
0
粉丝
渗透测试187,7913字数 116阅读0分23秒阅读模式
AI智能摘要
想把163镜像站的所有yum包一键镜像到本地吗?这篇文章给出了一段实用Python脚本:用requests和BeautifulSoup抓取指定目录下的所有文件链接,再用wget批量下载到本地,适合搭建离线或内网yum源。摘要里说明了脚本核心流程(请求页面、解析标签、拼接下载链接、调用系统wget)和适用场景,读后你能快速复制运行并根据需要改造目录或并发下载策略,省去手动逐个抓包的繁琐。

用于搭建本地yum源,编写了一个小脚本,将163官方站点的yum文件全部下载到本地。

    #!/usr/bin/python
    import requests
    from bs4 import BeautifulSoup
    import os
    link_list = []
    downurl = []
    s = requests.session()
    url = "http://mirrors.163.com/centos/7/os/x86_64/Packages/"
    response = s.get(url)
    text = response.text
    soup = BeautifulSoup(response.content,'lxml')
    a = soup.find_all('a')
    for x in a:
        link = x.get('href')
        if link:link_list.append(link)
    for filename in link_list:
        down = url + filename
        downurl.append(down)
        get = os.popen("wget %s"%down)
        print get.read()

http://www.oniont.cn/index.php/archives/5.html

 
OnionT@KillBoy
评论  18  访客  18
    • Driftlull
      Driftlull 1

      这个脚本直接抓目录挺省事的,跑一下就有一堆包了,但wget并发要注意别把源弄封了。

      • 华彩
        华彩 0

        爬下载列表前最好加个判断排除上级目录和非rpm文件,不然会多下来很多无用东西。

        • 丝路琴心
          丝路琴心 0

          目录里有很多符号链接,直接拼接有时会出错,建议用requests.head先检查下链接是否可下载。

          • 优品生活
            优品生活 0

            这个方法对小规模本地yum源够用,我之前用过,搭建好后用createrepo就行了。

            • 幽灵画匠
              幽灵画匠 0

              wget一条条串行太慢,建议用aria2或用多线程下载,效率能上去好几倍。

              • 高飞的雄鹰
                高飞的雄鹰 0

                请问作者用的Python版本是啥?3.x的话os.popen那块能改成subprocess更可靠吗?

                • 黑月巫女
                  黑月巫女 0

                  前几天刚弄过这个,确实折腾了好久,最后还是用rsync镜像更稳一些。

                  • DreamyCloud
                    DreamyCloud 1

                    rargh,这样下载会把父目录也拉下来,得在过滤里加上../和/的判断,免得混乱。

                    • 混元祖师
                      混元祖师 0

                      脚本没做重试和断点续传,网络波动一下就可能失败,最好加个重试逻辑或者用wget的参数。

                      • 无形之刃
                        无形之刃 0

                        感觉得加个User-Agent和限速参数比较好,别太像爬虫被封IP了🙂

                        • 幻影权杖
                          幻影权杖 1

                          这脚本写得很实用,拿来就能用

                          • 蹦跶小狗
                            蹦跶小狗 0

                            Python2还是3?代码里有些地方可能需要调整

                            • 岁月书
                              岁月书 0

                              可以加个进度条显示下载情况,不然等半天没反应心里没底

                              • 糖心星
                                糖心星 0

                                直接用rsync同步整个目录不是更方便吗?

                                • 漠影
                                  漠影 1

                                  之前用类似方法下载过,确实要注意别被服务器拉黑

                                  • DoppelgangerGrin
                                    DoppelgangerGrin 0

                                    wget改成多线程会不会被封IP啊?有点担心

                                    • 雾夜谜踪
                                      雾夜谜踪 0

                                      脚本能加个校验md5的功能就更完美了

                                      • GhostOfDusk
                                        GhostOfDusk 1

                                        这个对搭建内网yum源很有帮助,收藏了

                                      匿名

                                      发表评论

                                      匿名网友

                                      拖动滑块以完成验证