Python下载163yum源文件

OnionT@KillBoy
OnionT@KillBoy
作者
47
文章
0
粉丝
渗透测试428,1153字数 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
评论  42  访客  42
    • Driftlull
      Driftlull 1

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

      • 华彩
        华彩 0

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

        • 丝路琴心
          丝路琴心 0

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

          • 优品生活
            优品生活 0

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

            • 幽灵画匠
              幽灵画匠 1

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

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

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

                • 黑月巫女
                  黑月巫女 1

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

                  • DreamyCloud
                    DreamyCloud 1

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

                    • 混元祖师
                      混元祖师 0

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

                      • 无形之刃
                        无形之刃 0

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

                          • 冽风不语
                            冽风不语 0

                            @ 无形之刃 加User-Agent确实有必要,我上次没加直接被403了

                          • 幻影权杖
                            幻影权杖 1

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

                            • 蹦跶小狗
                              蹦跶小狗 0

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

                                • 奶芙琳琳
                                  奶芙琳琳 0

                                  @ 蹦跶小狗 Python3跑os.popen会报错,得换成subprocess

                                • 岁月书
                                  岁月书 0

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

                                  • 糖心星
                                    糖心星 0

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

                                    • 漠影
                                      漠影 1

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

                                        • 炼狱之怒
                                          炼狱之怒 0

                                          @ 漠影 163源对爬虫挺敏感的,最好sleep一下再下

                                        • DoppelgangerGrin
                                          DoppelgangerGrin 0

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

                                            • 黑白记忆
                                              黑白记忆 1

                                              @ DoppelgangerGrin 多线程别开太高,我试过5个并发就差点被限了

                                            • 雾夜谜踪
                                              雾夜谜踪 0

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

                                              • GhostOfDusk
                                                GhostOfDusk 1

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

                                                  • 神秘的龙猫
                                                    神秘的龙猫 0

                                                    @ GhostOfDusk 内网yum源搭起来真不省心,这脚本能省点事

                                                  • 夜莺独语
                                                    夜莺独语 1

                                                    有没有试过用curl代替wget?感觉更轻量一些

                                                    • 暮光审判者
                                                      暮光审判者 0

                                                      下载完还要createrepo建索引吧,建议把这条也写上

                                                      • 霜诀
                                                        霜诀 0

                                                        这脚本跑起来卡半天,加个进度条吧😅

                                                        • 记忆碎片
                                                          记忆碎片 0

                                                          符号链接那块坑死我了,直接拼路径会404

                                                          • 镜界行者
                                                            镜界行者 1

                                                            有人试过用aria2批量下吗?感觉比wget稳

                                                            • 寒山夜行
                                                              寒山夜行 1

                                                              createrepo那步漏了,新手可能不知道要建索引

                                                              • 星际动力
                                                                星际动力 1

                                                                我之前也踩过这坑,最后还是rsync香

                                                                • 小巨人
                                                                  小巨人 1

                                                                  求问能过滤只下特定版本的包不?

                                                                    • 湮灭之光
                                                                      湮灭之光 1

                                                                      @ 小巨人 想下指定版本的包得自己改过滤逻辑吧?比如正则匹配文件名

                                                                    • 意识迷宫
                                                                      意识迷宫 0

                                                                      直接wget确实慢,但简单粗暴能跑就行

                                                                      • TheFakeExtrovert
                                                                        TheFakeExtrovert 1

                                                                        用requests+bs4抓链接,这思路还挺巧的

                                                                        • 对不起我错了
                                                                          对不起我错了 0

                                                                          这脚本跑起来太慢了,串行下载真的顶不住

                                                                          • 四季小屋
                                                                            四季小屋 0

                                                                            符号链接问题坑死我了,拼完路径一堆404

                                                                            • 夜晚的街灯
                                                                              夜晚的街灯 0

                                                                              有人试过用aria2吗?感觉比wget稳还快

                                                                              • 黑暗之魂
                                                                                黑暗之魂 0

                                                                                createrepo那步真不能漏,不然yum装不了包

                                                                                • 午夜独醒
                                                                                  午夜独醒 1

                                                                                  循环里加个sleep吧,不然容易被163限速

                                                                                  • 沉睡兽
                                                                                    沉睡兽 1

                                                                                    新手问下,下载完直接放http目录就行了吗?

                                                                                    • 孤星旅人
                                                                                      孤星旅人 0

                                                                                      限速+随机延时比较稳妥,别把人家源打挂了😅

                                                                                      • 暗影主宰
                                                                                        暗影主宰 0

                                                                                        Python3的话os.popen换成subprocess更靠谱吧

                                                                                      匿名

                                                                                      发表评论

                                                                                      匿名网友

                                                                                      拖动滑块以完成验证