AI智能摘要
想把163镜像站的所有yum包一键镜像到本地吗?这篇文章给出了一段实用Python脚本:用requests和BeautifulSoup抓取指定目录下的所有文件链接,再用wget批量下载到本地,适合搭建离线或内网yum源。摘要里说明了脚本核心流程(请求页面、解析标签、拼接下载链接、调用系统wget)和适用场景,读后你能快速复制运行并根据需要改造目录或并发下载策略,省去手动逐个抓包的繁琐。
— AI 生成的文章内容摘要
用于搭建本地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

上海市 1F
这个脚本直接抓目录挺省事的,跑一下就有一堆包了,但wget并发要注意别把源弄封了。
浙江省台州市椒江区 2F
爬下载列表前最好加个判断排除上级目录和非rpm文件,不然会多下来很多无用东西。
江苏省常州市 3F
目录里有很多符号链接,直接拼接有时会出错,建议用requests.head先检查下链接是否可下载。
陕西省西安市 4F
这个方法对小规模本地yum源够用,我之前用过,搭建好后用createrepo就行了。
新加坡 5F
wget一条条串行太慢,建议用aria2或用多线程下载,效率能上去好几倍。
韩国 6F
请问作者用的Python版本是啥?3.x的话os.popen那块能改成subprocess更可靠吗?
河南省郑州市 7F
前几天刚弄过这个,确实折腾了好久,最后还是用rsync镜像更稳一些。
澳大利亚 8F
rargh,这样下载会把父目录也拉下来,得在过滤里加上../和/的判断,免得混乱。
日本 9F
脚本没做重试和断点续传,网络波动一下就可能失败,最好加个重试逻辑或者用wget的参数。
浙江省丽水市 10F
感觉得加个User-Agent和限速参数比较好,别太像爬虫被封IP了🙂
北京市 11F
这脚本写得很实用,拿来就能用
浙江省杭州市 12F
Python2还是3?代码里有些地方可能需要调整
日本 13F
可以加个进度条显示下载情况,不然等半天没反应心里没底
北京市 14F
直接用rsync同步整个目录不是更方便吗?
台湾省 15F
之前用类似方法下载过,确实要注意别被服务器拉黑
江苏省南京市 16F
wget改成多线程会不会被封IP啊?有点担心
北京市 17F
脚本能加个校验md5的功能就更完美了
香港 18F
这个对搭建内网yum源很有帮助,收藏了